Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 274 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Push | 21894497 | 28 days ago | IN | 0 ETH | 0.00012436 | ||||
Hook | 21894493 | 28 days ago | IN | 0 ETH | 0.00006155 | ||||
Pick | 21894490 | 28 days ago | IN | 0 ETH | 0.00005755 | ||||
Push | 21887474 | 29 days ago | IN | 0 ETH | 0.00014374 | ||||
Hook | 21887470 | 29 days ago | IN | 0 ETH | 0.0000618 | ||||
Pick | 21887467 | 29 days ago | IN | 0 ETH | 0.00006367 | ||||
Push | 21880235 | 30 days ago | IN | 0 ETH | 0.00011893 | ||||
Hook | 21880232 | 30 days ago | IN | 0 ETH | 0.00006133 | ||||
Pick | 21880229 | 30 days ago | IN | 0 ETH | 0.00006365 | ||||
Push | 21873181 | 31 days ago | IN | 0 ETH | 0.00011453 | ||||
Hook | 21873176 | 31 days ago | IN | 0 ETH | 0.00006571 | ||||
Pick | 21873173 | 31 days ago | IN | 0 ETH | 0.00006588 | ||||
Push | 21844637 | 35 days ago | IN | 0 ETH | 0.00016755 | ||||
Hook | 21844634 | 35 days ago | IN | 0 ETH | 0.00007552 | ||||
Pick | 21844631 | 35 days ago | IN | 0 ETH | 0.00007569 | ||||
Push | 21837291 | 36 days ago | IN | 0 ETH | 0.00020238 | ||||
Hook | 21837285 | 36 days ago | IN | 0 ETH | 0.00009397 | ||||
Pick | 21837281 | 36 days ago | IN | 0 ETH | 0.00006802 | ||||
Push | 21837255 | 36 days ago | IN | 0 ETH | 0.00014228 | ||||
Hook | 21837251 | 36 days ago | IN | 0 ETH | 0.00006539 | ||||
Pick | 21837247 | 36 days ago | IN | 0 ETH | 0.00006387 | ||||
Push | 21817459 | 39 days ago | IN | 0 ETH | 0.00013258 | ||||
Hook | 21817456 | 39 days ago | IN | 0 ETH | 0.00007369 | ||||
Pick | 21817453 | 39 days ago | IN | 0 ETH | 0.0000723 | ||||
Push | 21817440 | 39 days ago | IN | 0 ETH | 0.00018755 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RwaMultiSwapOutputConduit
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: © 2021 Lev Livnev <[email protected]> // SPDX-FileCopyrightText: © 2022 Dai Foundation <www.daifoundation.org> // SPDX-License-Identifier: AGPL-3.0-or-later // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. pragma solidity 0.6.12; import {DaiAbstract} from "dss-interfaces/dss/DaiAbstract.sol"; import {PsmAbstract} from "dss-interfaces/dss/PsmAbstract.sol"; import {GemAbstract} from "dss-interfaces/ERC/GemAbstract.sol"; import {GemJoinAbstract} from "dss-interfaces/dss/GemJoinAbstract.sol"; /** * @author Lev Livnev <[email protected]> * @author 0xDecr1pto <[email protected]> * @title An Output Conduit for real-world assets (RWA). * @dev This contract differs from the original [RwaSwapOutputConduit](https://github.com/makerdao/rwa-toolkit/blob/92c79aac24ef7645902ce4be57ba41b19e6c7dd5/src/conduits/RwaSwapOutputConduit.sol): * - This conduit can handle multiple PSM. (`pal` whitelist of PSM's) * - Using `clap/slap` for managing the PSM whitelist. * - Using `hook` method for choosing PSM address. (PSM address should be whitelisted) * - `push` and `push(amt)` swap DAI to GEM using selected (`hooked`) PSM address. * - It's not possible to make `pick` and `push` permissionless by `hope`ing and `mate`ing `address(0)`. We realized that output conduits should never be permissionless. */ contract RwaMultiSwapOutputConduit { /// @notice DAI token contract address. DaiAbstract public immutable dai; /// @notice Addresses with admin access on this contract. `wards[usr]` mapping(address => uint256) public wards; /// @dev Addresses with operator access on this contract. `can[usr]` mapping(address => uint256) public can; /// @notice Whitelist for addresses which can be picked. `bud[who]` mapping(address => uint256) public bud; /// @notice Addresses with push access on this contract. `may[usr]` mapping(address => uint256) public may; /// @notice PSM addresses whitelist. `pal[psm]` mapping(address => uint256) public pal; /// @notice PSM contract address. address public psm; /// @notice GEM Recipient address. address public to; /// @notice Destination address for DAI after calling `quit`. address public quitTo; /** * @notice `usr` was granted admin access. * @param usr The user address. */ event Rely(address indexed usr); /** * @notice `usr` admin access was revoked. * @param usr The user address. */ event Deny(address indexed usr); /** * @notice `usr` was granted operator access. * @param usr The user address. */ event Hope(address indexed usr); /** * @notice `usr` operator access was revoked. * @param usr The user address. */ event Nope(address indexed usr); /** * @notice `usr` was granted push access. * @param usr The user address. */ event Mate(address indexed usr); /** * @notice `usr` push access was revoked. * @param usr The user address. */ event Hate(address indexed usr); /** * @notice `who` address whitelisted for pick. * @param who The user address. */ event Kiss(address indexed who); /** * @notice `who` address was removed from whitelist. * @param who The user address. */ event Diss(address indexed who); /** * @notice `psm` address whitelisted for hook. * @param psm The PSM address. */ event Clap(address indexed psm); /** * @notice `psm` address was removed from whitelist. * @param psm The user address. */ event Slap(address indexed psm); /** * @notice `psm` address was choosen. * @param psm The PSM address. */ event Hook(address indexed psm); /** * @notice `who` address was picked as the recipient. * @param who The user address. */ event Pick(address indexed who); /** * @notice `amt` amount of GEM was pushed to the recipient `to` using `psm`. * @param psm PSM address used for swap. * @param gem GEM token address used. * @param to Destination address for GEM. * @param amt The amount of GEM. */ event Push(address indexed psm, address indexed gem, address indexed to, uint256 amt); /** * @notice A contract parameter was updated. * @param what The changed parameter name. Currently the supported values are: "quitTo", "psm". * @param data The new value of the parameter. */ event File(bytes32 indexed what, address data); /** * @notice The conduit outstanding DAI balance was flushed out to `quitTo` address. * @param quitTo The quitTo address. * @param wad The amount of DAI flushed out. */ event Quit(address indexed quitTo, uint256 wad); /** * @notice `amt` outstanding `token` balance was flushed out to `usr`. * @param token The token address. * @param usr The destination address. * @param amt The amount of `token` flushed out. */ event Yank(address indexed token, address indexed usr, uint256 amt); modifier auth() { require(wards[msg.sender] == 1, "RwaMultiSwapOutputConduit/not-authorized"); _; } modifier onlyOperator() { require(can[msg.sender] == 1, "RwaMultiSwapOutputConduit/not-operator"); _; } modifier onlyMate() { require(may[msg.sender] == 1, "RwaMultiSwapOutputConduit/not-mate"); _; } /** * @notice Defines addresses and gives `msg.sender` admin access. * @param _dai DAI contract address. */ constructor(address _dai) public { require(_dai != address(0), "RwaMultiSwapOutputConduit/wrong-dai-address"); dai = DaiAbstract(_dai); wards[msg.sender] = 1; emit Rely(msg.sender); } /*////////////////////////////////// Authorization //////////////////////////////////*/ /** * @notice Grants `usr` admin access to this contract. * @param usr The user address. */ function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } /** * @notice Revokes `usr` admin access from this contract. * @param usr The user address. */ function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } /** * @notice Grants `usr` operator access to this contract. * @param usr The user address. */ function hope(address usr) external auth { can[usr] = 1; emit Hope(usr); } /** * @notice Revokes `usr` operator access from this contract. * @param usr The user address. */ function nope(address usr) external auth { can[usr] = 0; emit Nope(usr); } /** * @notice Grants `usr` push access to this contract. * @param usr The user address. */ function mate(address usr) external auth { may[usr] = 1; emit Mate(usr); } /** * @notice Revokes `usr` push access from this contract. * @param usr The user address. */ function hate(address usr) external auth { may[usr] = 0; emit Hate(usr); } /** * @notice Whitelist `who` address for `pick`. * @param who The user address. */ function kiss(address who) external auth { bud[who] = 1; emit Kiss(who); } /** * @notice Remove `who` address from `pick` whitelist. * @param who The user address. */ function diss(address who) external auth { if (to == who) to = address(0); bud[who] = 0; emit Diss(who); } /** * @notice Whitelist `psm` address for `hook`. * @param _psm The PSM address. */ function clap(address _psm) external auth { require(PsmAbstract(_psm).dai() == address(dai), "RwaMultiSwapOutputConduit/wrong-dai-for-psm"); // Check if GEM `decimals` is not greater then DAI decimals. // We assume that DAI will always have 18 decimals require( GemAbstract(GemJoinAbstract(PsmAbstract(_psm).gemJoin()).gem()).decimals() <= 18, "RwaMultiSwapOutputConduit/unsupported-gem-decimals" ); // Give unlimited approval to PSM dai.approve(_psm, type(uint256).max); pal[_psm] = 1; emit Clap(_psm); } /** * @notice Remove `psm` address from `hook` whitelist. * @param _psm The PSM address. */ function slap(address _psm) external auth { dai.approve(address(_psm), 0); if (psm == _psm) psm = address(0); pal[_psm] = 0; emit Slap(_psm); } /*////////////////////////////////// Administration //////////////////////////////////*/ /** * @notice Updates a contract parameter. * @param what The changed parameter name. `"quitTo"`. * @param data The new value of the parameter. */ function file(bytes32 what, address data) external auth { if (what == "quitTo") { quitTo = data; } else { revert("RwaMultiSwapOutputConduit/unrecognised-param"); } emit File(what, data); } /** * @notice Sets `who` address as the recipient. * @param who Recipient address. * @dev `who` address should have been whitelisted using `kiss`. */ function pick(address who) external onlyOperator { require(bud[who] == 1 || who == address(0), "RwaMultiSwapOutputConduit/not-bud"); to = who; emit Pick(who); } /** * @notice Sets `psm` address which will be used for swap DAI -> GEM. * @param _psm PSM address. * @dev `psm` address should have been whitelisted using `clap`. */ function hook(address _psm) external onlyOperator { require(pal[_psm] == 1 || _psm == address(0), "RwaMultiSwapOutputConduit/not-pal"); psm = _psm; emit Hook(_psm); } /*////////////////////////////////// Operations //////////////////////////////////*/ /** * @notice Swaps the DAI balance of this contract into GEM through the PSM and push it into the recipient address. * @dev `msg.sender` must have received push access through `mate()`. */ function push() external onlyMate { _doPush(dai.balanceOf(address(this))); } /** * @notice Swaps the specified amount of DAI into GEM through the PSM and push it to the recipient address. * @dev `msg.sender` must have received push access through `mate()`. * @param wad DAI amount. */ function push(uint256 wad) external onlyMate { _doPush(wad); } /** * @notice Flushes out any DAI balance to `quitTo` address. * @dev `msg.sender` must have received push access through `mate()`. */ function quit() external onlyMate { _doQuit(dai.balanceOf(address(this))); } /** * @notice Flushes out the specified amount of DAI to the `quitTo` address. * @dev `msg.sender` must have received push access through `mate()`. * @param wad DAI amount. */ function quit(uint256 wad) external onlyMate { _doQuit(wad); } /** * @notice Flushes out `amt` of `token` sitting in this contract to `usr` address. * @dev Can only be called by the admin. * @param token Token address. * @param usr Destination address. * @param amt Token amount. */ function yank( address token, address usr, uint256 amt ) external auth { GemAbstract(token).transfer(usr, amt); emit Yank(token, usr, amt); } /** * @notice Return Gem address of the selected PSM * @return gem Gem address. */ function gem() external view returns (address) { return psm == address(0) ? address(0) : GemJoinAbstract(PsmAbstract(psm).gemJoin()).gem(); } /** * @notice Calculates the amount of GEM received for swapping `wad` of DAI. * @param _psm The PSM instance. * @param wad DAI amount. * @return amt Expected GEM amount. */ function expectedGemAmt(address _psm, uint256 wad) public view returns (uint256 amt) { uint256 decimals = GemAbstract(GemJoinAbstract(PsmAbstract(_psm).gemJoin()).gem()).decimals(); // By using any PSM, we cannot guarantee its gem has 18 decimals or less, so we need SafeMath. uint256 to18ConversionFactor = 10**_sub(18, decimals); return _mul(wad, WAD) / _mul(_add(WAD, PsmAbstract(_psm).tout()), to18ConversionFactor); } /** * @notice Calculates the required amount of DAI to get `amt` amount of GEM. * @param _psm The PSM instance. * @param amt GEM amount. * @return wad Required DAI amount. */ function requiredDaiWad(address _psm, uint256 amt) external view returns (uint256 wad) { uint256 decimals = GemAbstract(GemJoinAbstract(PsmAbstract(_psm).gemJoin()).gem()).decimals(); // By using any PSM, we cannot guarantee its gem has 18 decimals or less, so we need SafeMath. uint256 to18ConversionFactor = 10**_sub(18, decimals); uint256 amt18 = _mul(amt, to18ConversionFactor); uint256 fee = _mul(amt18, PsmAbstract(_psm).tout()) / WAD; return _add(amt18, fee); } /** * @notice Swaps the specified amount of DAI into GEM through the PSM and push it to the recipient address. * @param wad DAI amount. */ function _doPush(uint256 wad) internal { require(to != address(0), "RwaMultiSwapOutputConduit/to-not-picked"); require(psm != address(0), "RwaMultiSwapOutputConduit/psm-not-hooked"); // We might lose some dust here because of rounding errors. I.e.: USDC has 6 dec and DAI has 18. uint256 gemAmt = expectedGemAmt(psm, wad); require(gemAmt > 0, "RwaMultiSwapOutputConduit/insufficient-swap-gem-amount"); address recipient = to; address _psm = psm; address _gem = GemJoinAbstract(PsmAbstract(psm).gemJoin()).gem(); to = address(0); psm = address(0); PsmAbstract(_psm).buyGem(recipient, gemAmt); emit Push(_psm, _gem, recipient, gemAmt); } /** * @notice Flushes out the specified amount of DAI to `quitTo` address. * @param wad The DAI amount. */ function _doQuit(uint256 wad) internal { require(quitTo != address(0), "RwaMultiSwapOutputConduit/invalid-quit-to-address"); dai.transfer(quitTo, wad); emit Quit(quitTo, wad); } /*////////////////////////////////// Math //////////////////////////////////*/ uint256 internal constant WAD = 10**18; function _add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "Math/add-overflow"); } function _sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "Math/sub-overflow"); } function _mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, "Math/mul-overflow"); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // https://github.com/makerdao/dss/blob/master/src/dai.sol interface DaiAbstract { function wards(address) external view returns (uint256); function rely(address) external; function deny(address) external; function name() external view returns (string memory); function symbol() external view returns (string memory); function version() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address) external view returns (uint256); function allowance(address, address) external view returns (uint256); function nonces(address) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external view returns (bytes32); function transfer(address, uint256) external returns (bool); function transferFrom(address, address, uint256) external returns (bool); function mint(address, uint256) external; function burn(address, uint256) external; function approve(address, uint256) external returns (bool); function push(address, uint256) external; function pull(address, uint256) external; function move(address, address, uint256) external; function permit(address, address, uint256, uint256, bool, uint8, bytes32, bytes32) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // https://github.com/makerdao/dss-psm/blob/master/src/psm.sol interface PsmAbstract { function wards(address) external view returns (uint256); function rely(address) external; function deny(address) external; function vat() external view returns (address); function gemJoin() external view returns (address); function dai() external view returns (address); function daiJoin() external view returns (address); function ilk() external view returns (bytes32); function vow() external view returns (address); function tin() external view returns (uint256); function tout() external view returns (uint256); function file(bytes32 what, uint256 data) external; function hope(address) external; function nope(address) external; function sellGem(address usr, uint256 gemAmt) external; function buyGem(address usr, uint256 gemAmt) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // A base ERC-20 abstract class // https://eips.ethereum.org/EIPS/eip-20 interface GemAbstract { function totalSupply() external view returns (uint256); function balanceOf(address) external view returns (uint256); function allowance(address, address) external view returns (uint256); function approve(address, uint256) external returns (bool); function transfer(address, uint256) external returns (bool); function transferFrom(address, address, uint256) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.5.12; // https://github.com/makerdao/dss/blob/master/src/join.sol interface GemJoinAbstract { function wards(address) external view returns (uint256); function rely(address) external; function deny(address) external; function vat() external view returns (address); function ilk() external view returns (bytes32); function gem() external view returns (address); function dec() external view returns (uint256); function live() external view returns (uint256); function cage() external; function join(address, uint256) external; function exit(address, uint256) external; }
{ "remappings": [ "clipper-mom/=lib/dss-exec-lib/lib/clipper-mom/src/", "ds-auth/=lib/ds-token/lib/ds-auth/src/", "ds-math/=lib/ds-math/src/", "ds-note/=lib/ds-value/lib/ds-thing/lib/ds-note/src/", "ds-pause/=lib/dss-gem-joins/lib/dss-deploy/lib/ds-pause/src/", "ds-proxy/=lib/dss-exec-lib/lib/ds-proxy/src/", "ds-stop/=lib/dss-exec-lib/lib/osm-mom/lib/osm/lib/ds-stop/src/", "ds-test/=lib/ds-test/src/", "ds-thing/=lib/ds-value/lib/ds-thing/src/", "ds-token/=lib/ds-token/src/", "ds-value/=lib/ds-value/src/", "dss-auto-line/=lib/dss-exec-lib/lib/dss-auto-line/src/", "dss-chain-log/=lib/mip21-toolkit/lib/dss-chain-log/src/", "dss-deploy/=lib/dss-gem-joins/lib/dss-deploy/src/", "dss-direct-deposit/=lib/dss-exec-lib/lib/dss-direct-deposit/src/", "dss-exec-lib/=lib/dss-exec-lib/src/", "dss-gem-joins/=lib/dss-gem-joins/src/", "dss-interfaces/=lib/dss-interfaces/src/", "dss-lerp/=lib/dss-exec-lib/lib/dss-lerp/src/", "dss-psm/=lib/mip21-toolkit/lib/dss-psm/src/", "dss/=lib/dss/src/", "esm/=lib/dss-gem-joins/lib/dss-deploy/lib/esm/src/", "flipper-mom/=lib/dss-exec-lib/lib/flipper-mom/src/", "forge-std/=lib/forge-std/src/", "forward-proxy/=lib/forward-proxy/src/", "ilk-registry/=lib/mip21-toolkit/lib/ilk-registry/src/", "median/=lib/dss-exec-lib/lib/median/src/", "mip21-toolkit/=lib/mip21-toolkit/src/", "mkr-authority/=lib/dss-exec-lib/lib/mkr-authority/src/", "osm-mom/=lib/dss-exec-lib/lib/osm-mom/src/", "osm/=lib/dss-exec-lib/lib/osm-mom/lib/osm/src/", "univ2-lp-oracle/=lib/dss-exec-lib/lib/univ2-lp-oracle/src/" ], "optimizer": { "enabled": false, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "istanbul", "libraries": { "src/shared/ChecksummedAddress.sol": { "ChecksummedAddress": "0xf2a8cd9d87fa6cc5ce564137fb134a342ce671ab" }, "src/shared/SolidityTypeConversions.sol": { "SolidityTypeConversions": "0x0b4dd91c5eacbfe63f73e092f76744701c2508b5" }, "src/shared/Strings.sol": { "Strings": "0xd19e0062093449614e21ef44cb50301aba2d5839" } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_dai","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"psm","type":"address"}],"name":"Clap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"Diss","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"address","name":"data","type":"address"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Hate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"psm","type":"address"}],"name":"Hook","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Hope","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"Kiss","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Mate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Nope","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"}],"name":"Pick","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"psm","type":"address"},{"indexed":true,"internalType":"address","name":"gem","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"}],"name":"Push","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"quitTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Quit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"psm","type":"address"}],"name":"Slap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"}],"name":"Yank","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"can","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_psm","type":"address"}],"name":"clap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"contract DaiAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"diss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_psm","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"expectedGemAmt","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"data","type":"address"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gem","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"hate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_psm","type":"address"}],"name":"hook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"hope","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"kiss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"mate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"may","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"pick","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"psm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"quit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quitTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_psm","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"requiredDaiWad","outputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_psm","type":"address"}],"name":"slap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"to","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"yank","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162003a2738038062003a27833981810160405260208110156200003757600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180620039fc602b913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a25060805160601c613831620001cb6000398061155c52806122bb52806127885280612a895280612c015280612cc05280612fcc52506138316000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80639c52a7f111610104578063d6631594116100a2578063f29c29c411610071578063f29c29c4146108f5578063f41a6f4414610939578063f4b9fa751461097d578063fc2b8cc3146109b1576101da565b8063d6631594146107cb578063daddce52146107ff578063dbde38d21461086d578063dc4d20fa146108b1576101da565b8063a81de4f8116100de578063a81de4f814610689578063bc206b0a146106cd578063bf353dbb14610725578063d4e8be831461077d576101da565b80639c52a7f1146105bd578063a0eba25914610601578063a3b22fc414610645576101da565b80634fce7a2a1161017c5780637bd2bea71161014b5780637bd2bea7146104ef5780638035f0ce14610523578063888e717f1461052d578063959ac4841461058f576101da565b80634fce7a2a146103cb57806359ac371b1461042357806365c4ce7a1461046757806365fae35e146104ab576101da565b806322b366fd116101b857806322b366fd1461028b578063298a2e45146102ed578063344cbc6814610345578063453638ce14610373576101da565b806304bda262146101df57806313151981146102135780632250b56a14610247575b600080fd5b6101e76109bb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021b6109e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102896004803603602081101561025d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a07565b005b6102d7600480360360408110156102a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bf4565b6040518082815260200191505060405180910390f35b61032f6004803603602081101561030357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4e565b6040518082815260200191505060405180910390f35b6103716004803603602081101561035b57600080fd5b8101908080359060200190929190505050610e66565b005b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f0a565b6040518082815260200191505060405180910390f35b61040d600480360360208110156103e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f22565b6040518082815260200191505060405180910390f35b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f3a565b005b6104a96004803603602081101561047d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061105c565b005b6104ed600480360360208110156104c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611217565b005b6104f7611338565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61052b6114bf565b005b6105796004803603604081101561054357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611623565b6040518082815260200191505060405180910390f35b6105bb600480360360208110156105a557600080fd5b8101908080359060200190929190505050611881565b005b6105ff600480360360208110156105d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611925565b005b6106436004803603602081101561061757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a46565b005b6106876004803603602081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c33565b005b6106cb6004803603602081101561069f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d54565b005b61070f600480360360208110156106e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e76565b6040518082815260200191505060405180910390f35b6107676004803603602081101561073b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e8e565b6040518082815260200191505060405180910390f35b6107c96004803603604081101561079357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ea6565b005b6107d361204e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61086b6004803603606081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612074565b005b6108af6004803603602081101561088357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612222565b005b6108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ab565b005b6109376004803603602081101561090b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125cd565b005b61097b6004803603602081101561094f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126ef565b005b610985612bff565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109b9612c23565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061377e6026913960400191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480610b185750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061375d6021913960400191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff1254cfe8cda2983bd67bed9a74899622072c7629fb1aa4fa6cd04749a79663b60405160405180910390a250565b6000808373ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3d57600080fd5b505afa158015610c51573d6000803e3d6000fd5b505050506040513d6020811015610c6757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b158015610cbd57600080fd5b505afa158015610cd1573d6000803e3d6000fd5b505050506040513d6020811015610ce757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d6020811015610d6757600080fd5b810190808051906020019092919050505060ff1690506000610d8a601283612d87565b600a0a9050610e2a610e24670de0b6b3a76400008773ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d6020811015610e0e57600080fd5b8101908080519060200190929190505050612e0a565b82612e8d565b610e3c85670de0b6b3a7640000612e8d565b81610e4357fe5b049250505092915050565b60046020528060005260406000206000915090505481565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610efe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b610f0781612f22565b50565b60036020528060005260406000206000915090505481565b60026020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f04942e12b9e2310f85c952df158815306377bb9f797dc3677d03be357427c53b60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561118c576000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b757600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b505afa15801561140b573d6000803e3d6000fd5b505050506040513d602081101561142157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561147757600080fd5b505afa15801561148b573d6000803e3d6000fd5b505050506040513d60208110156114a157600080fd5b81019080805190602001909291905050506114ba565b60005b905090565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611557576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b6116217f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115e157600080fd5b505afa1580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b810190808051906020019092919050505061312c565b565b6000808373ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561166c57600080fd5b505afa158015611680573d6000803e3d6000fd5b505050506040513d602081101561169657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ec57600080fd5b505afa158015611700573d6000803e3d6000fd5b505050506040513d602081101561171657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561176c57600080fd5b505afa158015611780573d6000803e3d6000fd5b505050506040513d602081101561179657600080fd5b810190808051906020019092919050505060ff16905060006117b9601283612d87565b600a0a905060006117ca8583612e8d565b90506000670de0b6b3a7640000611861838973ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d602081101561184b57600080fd5b8101908080519060200190929190505050612e8d565b8161186857fe5b0490506118758282612e0a565b94505050505092915050565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b6119228161312c565b50565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061377e6026913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480611b575750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061360b6021913960400191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd867ca092b2baf182819d4b4f6bcb8081f4d47861bc99983f2e701f36a1ba46860405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611cca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f3a21b662999d3fc0ceca48751a22bf61a806dcf3631e136271f02f7cb981fd4360405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fe25de3b40ce055247fe4ef6c00f96c8c3b6530536701ba1c48296b30b4bb0d9560405160405180910390a250565b60016020528060005260406000206000915090505481565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b7f71756974546f0000000000000000000000000000000000000000000000000000821415611fab5780600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ffc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061370a602c913960400191505060405180910390fd5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461210b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561217c57600080fd5b505af1158015612190573d6000803e3d6000fd5b505050506040513d60208110156121a657600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3336d8973868f7727fbbf287f4fd9fb0237fe2696b301f8a46c563cb46d7b419836040518082815260200191505060405180910390a3505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b38260006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561234b57600080fd5b505af115801561235f573d6000803e3d6000fd5b505050506040513d602081101561237557600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612420576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f213a712c65163d1d2c5f29a94038457aef2fd8ba97cb65275a89f4649156dc2c60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f9cd85b2ca76a06c46be663a514e012af1aea8954b0e53f42146cd9b1ebb21ebc60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612664576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb24460405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b15801561280357600080fd5b505afa158015612817573d6000803e3d6000fd5b505050506040513d602081101561282d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146128aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061365d602b913960400191505060405180910390fd5b60128173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156128f257600080fd5b505afa158015612906573d6000803e3d6000fd5b505050506040513d602081101561291c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561297257600080fd5b505afa158015612986573d6000803e3d6000fd5b505050506040513d602081101561299c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156129f257600080fd5b505afa158015612a06573d6000803e3d6000fd5b505050506040513d6020811015612a1c57600080fd5b810190808051906020019092919050505060ff161115612a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806136b06032913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3857600080fd5b505af1158015612b4c573d6000803e3d6000fd5b505050506040513d6020811015612b6257600080fd5b8101908080519060200190929190505050506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f650d7c8fc53fb0e39ab40467fee29e40e2036cfe4864f3101844a85dc553d10660405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612cbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b612d857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d4557600080fd5b505afa158015612d59573d6000803e3d6000fd5b505050506040513d6020811015612d6f57600080fd5b8101908080519060200190929190505050612f22565b565b6000828284039150811115612e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f7375622d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612e87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6164642d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600080821480612eaa5750828283850292508281612ea757fe5b04145b612f1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6d756c2d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061362c6031913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561307d57600080fd5b505af1158015613091573d6000803e3d6000fd5b505050506040513d60208110156130a757600080fd5b810190808051906020019092919050505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc81bfec1ac9d038698c3b15fc900dafbff3af4b9f26062f895dd08a676ec78ae826040518082815260200191505060405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806137366027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561327c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136886028913960400191505060405180910390fd5b60006132aa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610bf4565b905060008111613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806137a46036913960400191505060405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156133bd57600080fd5b505afa1580156133d1573d6000803e3d6000fd5b505050506040513d60208110156133e757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561343d57600080fd5b505afa158015613451573d6000803e3d6000fd5b505050506040513d602081101561346757600080fd5b810190808051906020019092919050505090506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16638d7ef9bb84866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561356f57600080fd5b505af1158015613583573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fa1d78ba217ab765a0cd05f65bd1369e128821cc891563c9c9721078ed865c5c6876040518082815260200191505060405180910390a4505050505056fe5277614d756c7469537761704f7574707574436f6e647569742f6e6f742d6275645277614d756c7469537761704f7574707574436f6e647569742f696e76616c69642d717569742d746f2d616464726573735277614d756c7469537761704f7574707574436f6e647569742f77726f6e672d6461692d666f722d70736d5277614d756c7469537761704f7574707574436f6e647569742f70736d2d6e6f742d686f6f6b65645277614d756c7469537761704f7574707574436f6e647569742f756e737570706f727465642d67656d2d646563696d616c735277614d756c7469537761704f7574707574436f6e647569742f6e6f742d617574686f72697a65645277614d756c7469537761704f7574707574436f6e647569742f756e7265636f676e697365642d706172616d5277614d756c7469537761704f7574707574436f6e647569742f746f2d6e6f742d7069636b65645277614d756c7469537761704f7574707574436f6e647569742f6e6f742d70616c5277614d756c7469537761704f7574707574436f6e647569742f6e6f742d6f70657261746f725277614d756c7469537761704f7574707574436f6e647569742f696e73756666696369656e742d737761702d67656d2d616d6f756e745277614d756c7469537761704f7574707574436f6e647569742f6e6f742d6d617465a26469706673582212204db3d3aa7ed716d82a769e1b27d3acb0d3e564eed01e6ea2533e609bed272edd64736f6c634300060c00335277614d756c7469537761704f7574707574436f6e647569742f77726f6e672d6461692d616464726573730000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80639c52a7f111610104578063d6631594116100a2578063f29c29c411610071578063f29c29c4146108f5578063f41a6f4414610939578063f4b9fa751461097d578063fc2b8cc3146109b1576101da565b8063d6631594146107cb578063daddce52146107ff578063dbde38d21461086d578063dc4d20fa146108b1576101da565b8063a81de4f8116100de578063a81de4f814610689578063bc206b0a146106cd578063bf353dbb14610725578063d4e8be831461077d576101da565b80639c52a7f1146105bd578063a0eba25914610601578063a3b22fc414610645576101da565b80634fce7a2a1161017c5780637bd2bea71161014b5780637bd2bea7146104ef5780638035f0ce14610523578063888e717f1461052d578063959ac4841461058f576101da565b80634fce7a2a146103cb57806359ac371b1461042357806365c4ce7a1461046757806365fae35e146104ab576101da565b806322b366fd116101b857806322b366fd1461028b578063298a2e45146102ed578063344cbc6814610345578063453638ce14610373576101da565b806304bda262146101df57806313151981146102135780632250b56a14610247575b600080fd5b6101e76109bb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021b6109e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102896004803603602081101561025d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a07565b005b6102d7600480360360408110156102a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bf4565b6040518082815260200191505060405180910390f35b61032f6004803603602081101561030357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4e565b6040518082815260200191505060405180910390f35b6103716004803603602081101561035b57600080fd5b8101908080359060200190929190505050610e66565b005b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f0a565b6040518082815260200191505060405180910390f35b61040d600480360360208110156103e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f22565b6040518082815260200191505060405180910390f35b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f3a565b005b6104a96004803603602081101561047d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061105c565b005b6104ed600480360360208110156104c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611217565b005b6104f7611338565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61052b6114bf565b005b6105796004803603604081101561054357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611623565b6040518082815260200191505060405180910390f35b6105bb600480360360208110156105a557600080fd5b8101908080359060200190929190505050611881565b005b6105ff600480360360208110156105d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611925565b005b6106436004803603602081101561061757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a46565b005b6106876004803603602081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c33565b005b6106cb6004803603602081101561069f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d54565b005b61070f600480360360208110156106e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e76565b6040518082815260200191505060405180910390f35b6107676004803603602081101561073b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e8e565b6040518082815260200191505060405180910390f35b6107c96004803603604081101561079357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ea6565b005b6107d361204e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61086b6004803603606081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612074565b005b6108af6004803603602081101561088357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612222565b005b6108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ab565b005b6109376004803603602081101561090b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125cd565b005b61097b6004803603602081101561094f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126ef565b005b610985612bff565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109b9612c23565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061377e6026913960400191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480610b185750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061375d6021913960400191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff1254cfe8cda2983bd67bed9a74899622072c7629fb1aa4fa6cd04749a79663b60405160405180910390a250565b6000808373ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3d57600080fd5b505afa158015610c51573d6000803e3d6000fd5b505050506040513d6020811015610c6757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b158015610cbd57600080fd5b505afa158015610cd1573d6000803e3d6000fd5b505050506040513d6020811015610ce757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d6020811015610d6757600080fd5b810190808051906020019092919050505060ff1690506000610d8a601283612d87565b600a0a9050610e2a610e24670de0b6b3a76400008773ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d6020811015610e0e57600080fd5b8101908080519060200190929190505050612e0a565b82612e8d565b610e3c85670de0b6b3a7640000612e8d565b81610e4357fe5b049250505092915050565b60046020528060005260406000206000915090505481565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610efe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b610f0781612f22565b50565b60036020528060005260406000206000915090505481565b60026020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f04942e12b9e2310f85c952df158815306377bb9f797dc3677d03be357427c53b60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561118c576000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b757600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f757600080fd5b505afa15801561140b573d6000803e3d6000fd5b505050506040513d602081101561142157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561147757600080fd5b505afa15801561148b573d6000803e3d6000fd5b505050506040513d60208110156114a157600080fd5b81019080805190602001909291905050506114ba565b60005b905090565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611557576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b6116217f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115e157600080fd5b505afa1580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b810190808051906020019092919050505061312c565b565b6000808373ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561166c57600080fd5b505afa158015611680573d6000803e3d6000fd5b505050506040513d602081101561169657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ec57600080fd5b505afa158015611700573d6000803e3d6000fd5b505050506040513d602081101561171657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561176c57600080fd5b505afa158015611780573d6000803e3d6000fd5b505050506040513d602081101561179657600080fd5b810190808051906020019092919050505060ff16905060006117b9601283612d87565b600a0a905060006117ca8583612e8d565b90506000670de0b6b3a7640000611861838973ffffffffffffffffffffffffffffffffffffffff1663fae036d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d602081101561184b57600080fd5b8101908080519060200190929190505050612e8d565b8161186857fe5b0490506118758282612e0a565b94505050505092915050565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b6119228161312c565b50565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061377e6026913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480611b575750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061360b6021913960400191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd867ca092b2baf182819d4b4f6bcb8081f4d47861bc99983f2e701f36a1ba46860405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611cca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f3a21b662999d3fc0ceca48751a22bf61a806dcf3631e136271f02f7cb981fd4360405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fe25de3b40ce055247fe4ef6c00f96c8c3b6530536701ba1c48296b30b4bb0d9560405160405180910390a250565b60016020528060005260406000206000915090505481565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b7f71756974546f0000000000000000000000000000000000000000000000000000821415611fab5780600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ffc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061370a602c913960400191505060405180910390fd5b817f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba82604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461210b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561217c57600080fd5b505af1158015612190573d6000803e3d6000fd5b505050506040513d60208110156121a657600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3336d8973868f7727fbbf287f4fd9fb0237fe2696b301f8a46c563cb46d7b419836040518082815260200191505060405180910390a3505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b38260006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561234b57600080fd5b505af115801561235f573d6000803e3d6000fd5b505050506040513d602081101561237557600080fd5b8101908080519060200190929190505050508073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612420576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f213a712c65163d1d2c5f29a94038457aef2fd8ba97cb65275a89f4649156dc2c60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f9cd85b2ca76a06c46be663a514e012af1aea8954b0e53f42146cd9b1ebb21ebc60405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612664576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb24460405160405180910390a250565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136e26028913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b815260040160206040518083038186803b15801561280357600080fd5b505afa158015612817573d6000803e3d6000fd5b505050506040513d602081101561282d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146128aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061365d602b913960400191505060405180910390fd5b60128173ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156128f257600080fd5b505afa158015612906573d6000803e3d6000fd5b505050506040513d602081101561291c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561297257600080fd5b505afa158015612986573d6000803e3d6000fd5b505050506040513d602081101561299c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156129f257600080fd5b505afa158015612a06573d6000803e3d6000fd5b505050506040513d6020811015612a1c57600080fd5b810190808051906020019092919050505060ff161115612a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806136b06032913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3857600080fd5b505af1158015612b4c573d6000803e3d6000fd5b505050506040513d6020811015612b6257600080fd5b8101908080519060200190929190505050506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f650d7c8fc53fb0e39ab40467fee29e40e2036cfe4864f3101844a85dc553d10660405160405180910390a250565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612cbb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137da6022913960400191505060405180910390fd5b612d857f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d4557600080fd5b505afa158015612d59573d6000803e3d6000fd5b505050506040513d6020811015612d6f57600080fd5b8101908080519060200190929190505050612f22565b565b6000828284039150811115612e04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f7375622d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015612e87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6164642d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600080821480612eaa5750828283850292508281612ea757fe5b04145b612f1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4d6174682f6d756c2d6f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061362c6031913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561307d57600080fd5b505af1158015613091573d6000803e3d6000fd5b505050506040513d60208110156130a757600080fd5b810190808051906020019092919050505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fc81bfec1ac9d038698c3b15fc900dafbff3af4b9f26062f895dd08a676ec78ae826040518082815260200191505060405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806137366027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561327c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806136886028913960400191505060405180910390fd5b60006132aa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610bf4565b905060008111613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806137a46036913960400191505060405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166301664f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156133bd57600080fd5b505afa1580156133d1573d6000803e3d6000fd5b505050506040513d60208110156133e757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561343d57600080fd5b505afa158015613451573d6000803e3d6000fd5b505050506040513d602081101561346757600080fd5b810190808051906020019092919050505090506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16638d7ef9bb84866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561356f57600080fd5b505af1158015613583573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fa1d78ba217ab765a0cd05f65bd1369e128821cc891563c9c9721078ed865c5c6876040518082815260200191505060405180910390a4505050505056fe5277614d756c7469537761704f7574707574436f6e647569742f6e6f742d6275645277614d756c7469537761704f7574707574436f6e647569742f696e76616c69642d717569742d746f2d616464726573735277614d756c7469537761704f7574707574436f6e647569742f77726f6e672d6461692d666f722d70736d5277614d756c7469537761704f7574707574436f6e647569742f70736d2d6e6f742d686f6f6b65645277614d756c7469537761704f7574707574436f6e647569742f756e737570706f727465642d67656d2d646563696d616c735277614d756c7469537761704f7574707574436f6e647569742f6e6f742d617574686f72697a65645277614d756c7469537761704f7574707574436f6e647569742f756e7265636f676e697365642d706172616d5277614d756c7469537761704f7574707574436f6e647569742f746f2d6e6f742d7069636b65645277614d756c7469537761704f7574707574436f6e647569742f6e6f742d70616c5277614d756c7469537761704f7574707574436f6e647569742f6e6f742d6f70657261746f725277614d756c7469537761704f7574707574436f6e647569742f696e73756666696369656e742d737761702d67656d2d616d6f756e745277614d756c7469537761704f7574707574436f6e647569742f6e6f742d6d617465a26469706673582212204db3d3aa7ed716d82a769e1b27d3acb0d3e564eed01e6ea2533e609bed272edd64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
-----Decoded View---------------
Arg [0] : _dai (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.