Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
907,569.994406536691732923 MKR
Holders
100,580 ( -0.025%)
Market
Price
$888.96 @ 0.328253 ETH (-3.98%)
Onchain Market Cap
$806,793,422.23
Circulating Supply Market Cap
$782,870,747.00
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | ![]() | MKR-USDT | $888.18 0.3283707 Eth | $6,561,121.00 7,150.236 MKR | 4.8303% |
2 | ![]() | MKR-USDT | $889.31 0.3286258 Eth | $6,022,956.00 6,606.394 MKR | 4.4629% |
3 | ![]() | MKR-USDT | $891.45 0.3295301 Eth | $2,749,581.00 2,995.867 MKR | 2.0238% |
4 | ![]() | MKR-USD | $888.07 0.3283647 Eth | $2,587,765.00 2,913.920 MKR | 1.9685% |
5 | ![]() | MKR-USDT | $889.82 0.3288154 Eth | $2,564,708.00 2,819.082 MKR | 1.9044% |
6 | ![]() | MKR-USDT | $887.38 0.3280633 Eth | $2,159,904.00 0.000 MKR | 0.0000% |
7 | ![]() | MKR-USDT | $888.72 0.3284088 Eth | $1,363,586.00 1,498.711 MKR | 1.0124% |
8 | ![]() | MKR-USDT | $889.18 0.3287405 Eth | $1,192,384.00 1,341.000 MKR | 0.9059% |
9 | ![]() | MKR-USDT | $890.17 0.3290569 Eth | $1,191,982.00 1,308.071 MKR | 0.8837% |
10 | ![]() | MKR-USDT | $886.18 0.3276195 Eth | $1,167,529.00 1,317.480 MKR | 0.8900% |
11 | ![]() | MKR-USDT | $886.00 0.3275664 Eth | $1,114,240.00 1,257.606 MKR | 0.8496% |
12 | ![]() | MKR-USDT | $889.19 0.3287314 Eth | $1,081,207.00 1,215.945 MKR | 0.8214% |
13 | ![]() | MKR-USDT | $888.17 0.3283174 Eth | $793,350.00 873.435 MKR | 0.5900% |
14 | ![]() | MKR-USDT | $887.23 0.3280533 Eth | $752,377.00 825.217 MKR | 0.5575% |
15 | ![]() | MKR-USDT | $886.31 0.3275310 Eth | $571,469.00 626.702 MKR | 0.4234% |
16 | ![]() | MKR-USDT | $886.19 0.3274708 Eth | $525,620.00 593.124 MKR | 0.4007% |
17 | ![]() | MKR-USDT | $888.35 0.3283840 Eth | $510,589.00 574.759 MKR | 0.3883% |
18 | ![]() | MKR-USDT | $890.23 0.3289659 Eth | $475,601.00 534.244 MKR | 0.3609% |
19 | ![]() | MKR-USDT | $886.17 0.3276311 Eth | $454,024.00 511.764 MKR | 0.3457% |
20 | ![]() | MKR-USDT | $885.80 0.3273270 Eth | $408,313.00 447.476 MKR | 0.3023% |
21 | ![]() | MKR-USDT | $883.59 0.3263351 Eth | $369,791.00 418.508 MKR | 0.2827% |
22 | ![]() | MKR-BTC | $886.42 0.3276975 Eth | $349,386.00 385.873 MKR | 0.2607% |
23 | ![]() | MKR-USDT | $887.18 0.3280009 Eth | $328,828.00 360.397 MKR | 0.2435% |
24 | ![]() | MKR-USDT | $890.78 0.3291696 Eth | $296,324.00 323.086 MKR | 0.2183% |
25 | ![]() | MKR-USDT | $890.77 0.3291790 Eth | $287,795.00 323.086 MKR | 0.2183% |
26 | ![]() | MKR-USDT | $882.97 0.3265014 Eth | $286,407.00 312.203 MKR | 0.2109% |
27 | ![]() | MKR-BTC | $888.30 0.3280576 Eth | $285,832.00 315.632 MKR | 0.2132% |
28 | ![]() | MKR-USDT | $886.19 0.3278719 Eth | $237,923.00 268.478 MKR | 0.1814% |
29 | ![]() | MKR-SGD | $885.58 0.3272971 Eth | $221,710.00 250.356 MKR | 0.1691% |
30 | ![]() | MKR-USDT | $886.80 0.3278488 Eth | $208,151.00 226.270 MKR | 0.1529% |
31 | ![]() | MKR-USDT | $883.23 0.3266327 Eth | $176,375.00 193.547 MKR | 0.1307% |
32 | ![]() | MKR-BTC | $886.44 0.3277161 Eth | $172,744.00 194.873 MKR | 0.1316% |
33 | ![]() | MKR-USDT | $888.03 0.3281668 Eth | $167,965.00 189.143 MKR | 0.1278% |
34 | ![]() | MKR-USDT | $884.18 0.3272227 Eth | $154,079.00 174.263 MKR | 0.1177% |
35 | ![]() | MKR-BTC | $887.46 0.3280341 Eth | $151,764.00 171.010 MKR | 0.1155% |
36 | ![]() | MKR-USDT | $886.19 0.3274708 Eth | $151,197.00 164.933 MKR | 0.1114% |
37 | ![]() | MKR-USDT | $886.22 0.3275340 Eth | $141,866.00 160.080 MKR | 0.1081% |
38 | ![]() | MKR-USDT | $890.35 0.3290487 Eth | $138,685.00 155.765 MKR | 0.1052% |
39 | ![]() | MKR-USDT | $888.57 0.3283534 Eth | $128,373.00 140.987 MKR | 0.0952% |
40 | ![]() | MKR-USDT | $888.09 0.3282132 Eth | $121,060.00 132.613 MKR | 0.0896% |
41 | ![]() | MKR-USDC | $889.64 0.3288581 Eth | $116,768.00 131.254 MKR | 0.0887% |
42 | ![]() | MKR-USDT | $886.19 0.3274708 Eth | $115,534.00 126.032 MKR | 0.0851% |
43 | ![]() | MKR-USDT | $888.31 0.3282562 Eth | $93,141.00 102.265 MKR | 0.0691% |
44 | ![]() | MKR-USD | $887.40 0.3279339 Eth | $92,136.00 103.827 MKR | 0.0701% |
45 | ![]() | MKR-USDT | $888.24 0.3283221 Eth | $84,464.00 95.091 MKR | 0.0642% |
46 | ![]() | MKR-USDT | $889.32 0.3286306 Eth | $83,907.00 92.096 MKR | 0.0622% |
47 | ![]() | MKR-USDT | $884.80 0.3269576 Eth | $81,272.00 89.164 MKR | 0.0602% |
48 | ![]() | MKR-USDT | $884.93 0.3275024 Eth | $79,403.00 89.728 MKR | 0.0606% |
49 | ![]() | MKR-USDT | $884.57 0.3270395 Eth | $73,499.00 83.090 MKR | 0.0561% |
50 | ![]() | MKR-USDT | $890.77 0.3292787 Eth | $71,414.00 78.501 MKR | 0.0530% |
51 | ![]() | MKR-EUR | $888.22 0.3283872 Eth | $67,225.00 75.685 MKR | 0.0511% |
52 | ![]() | MKR-TRY | $887.64 0.3283363 Eth | $53,463.00 59.613 MKR | 0.0403% |
53 | ![]() | MKR-USDT | $889.32 0.3286306 Eth | $49,736.00 54.577 MKR | 0.0369% |
54 | ![]() | MKR-USDT | $890.32 0.3290003 Eth | $48,380.00 52.920 MKR | 0.0357% |
55 | ![]() | MKR-USDC | $885.28 0.3273330 Eth | $43,772.00 47.872 MKR | 0.0323% |
56 | ![]() | MKR-USD | $884.99 0.3270292 Eth | $43,730.00 49.413 MKR | 0.0334% |
57 | ![]() | MKR-USD | $889.73 0.3287807 Eth | $42,278.00 47.518 MKR | 0.0321% |
58 | ![]() | MKR-USDT | $890.23 0.3290584 Eth | $39,261.00 43.412 MKR | 0.0293% |
59 | ![]() | MKR-USDT | $885.19 0.3271012 Eth | $37,557.00 40.950 MKR | 0.0277% |
60 | ![]() | MKR-BTC | $892.78 0.3302872 Eth | $34,327.00 37.657 MKR | 0.0254% |
61 | ![]() | MKR-XBT | $880.77 0.3254849 Eth | $33,892.00 38.480 MKR | 0.0260% |
62 | ![]() | MKR-EUR | $889.91 0.3288631 Eth | $27,358.00 30.742 MKR | 0.0208% |
63 | ![]() | MKR-JPY | $886.64 0.3278363 Eth | $27,289.00 30.777 MKR | 0.0208% |
64 | ![]() | MKR-EUR | $887.68 0.3277801 Eth | $27,256.00 30.116 MKR | 0.0203% |
65 | ![]() | MKR-USDT | $886.76 0.3278242 Eth | $22,393.00 24.572 MKR | 0.0166% |
66 | ![]() | MKR-THB | $886.51 0.3277533 Eth | $20,322.00 22.924 MKR | 0.0155% |
67 | ![]() | 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $884.38 0.3269532 Eth | $17,322.02 19.462 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2 | 0.0131% |
68 | ![]() | 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 | $888.66 0.3283860 Eth | $16,542.81 18.180 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2 | 0.0123% |
69 | ![]() | MKR-USDT | $884.66 0.3270490 Eth | $15,539.79 16.975 MKR | 0.0115% |
70 | ![]() | MKR-BTC | $888.46 0.3284774 Eth | $14,617.35 16.452 MKR | 0.0111% |
71 | ![]() | MKR-BTC | $889.46 0.3286828 Eth | $13,849.58 15.301 MKR | 0.0103% |
72 | ![]() | MKR-BTC | $885.22 0.3271651 Eth | $13,401.29 15.139 MKR | 0.0102% |
73 | ![]() | MKR-MYR | $893.16 0.3302072 Eth | $12,641.33 14.154 MKR | 0.0096% |
74 | ![]() | MKR-USDT | $884.87 0.3269848 Eth | $11,339.25 12.815 MKR | 0.0087% |
75 | ![]() | MKR-USD | $887.10 0.3278072 Eth | $10,720.62 11.676 MKR | 0.0079% |
76 | ![]() | MKR-USDT | $882.13 0.3258106 Eth | $10,638.96 12.061 MKR | 0.0081% |
77 | ![]() | MKR-USDT | $884.36 0.3267959 Eth | $8,787.52 9.937 MKR | 0.0067% |
78 | ![]() | MKR-BTC | $884.82 0.3271167 Eth | $8,322.44 9.156 MKR | 0.0062% |
79 | ![]() | MKR-USD | $886.06 0.3275884 Eth | $8,262.92 9.325 MKR | 0.0063% |
80 | ![]() | MKR-BRL | $891.36 0.3295258 Eth | $7,403.64 8.291 MKR | 0.0056% |
81 | ![]() | MKR-USDC | $886.64 0.3276400 Eth | $7,145.65 7.846 MKR | 0.0053% |
82 | ![]() | MKR-USDC | $886.52 0.3277049 Eth | $7,001.74 7.689 MKR | 0.0052% |
83 | ![]() | 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $884.75 0.3271057 Eth | $4,610.83 5.172 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2 | 0.0035% |
84 | ![]() | MKR-BTC | $887.51 0.3279591 Eth | $4,210.06 4.653 MKR | 0.0031% |
85 | ![]() | 0X56072C95FAA701256059AA122697B133ADED9279-0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2 | $886.07 0.3275929 Eth | $3,908.20 105,848.141 0X56072C95FAA701256059AA122697B133ADED9279 | 71.5048% |
86 | ![]() | 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $881.34 0.3256960 Eth | $3,253.73 3.650 0X9F8F72AA9304C8B593D555F12EF6589CC3A579A2 | 0.0025% |
87 | ![]() | MKR-USD | $885.00 0.3270329 Eth | $3,047.30 3.388 MKR | 0.0023% |
88 | ![]() | MKR-BRL | $895.72 0.3310085 Eth | $2,374.17 2.651 MKR | 0.0018% |
89 | ![]() | MKR-USD | $888.83 0.3284482 Eth | $2,202.35 2.478 MKR | 0.0017% |
90 | ![]() | 0X6F7C932E7684666C9FD1D44527765433E01FF61D-0X0D500B1D8E8EF31E21C99D1DB9A6444D3ADF1270 | $887.30 0.3278966 Eth | $2,037.09 2.343 0X6F7C932E7684666C9FD1D44527765433E01FF61D | 0.0016% |
91 | ![]() | MKR-IDR | $891.28 0.3293523 Eth | $855.29 0.930 MKR | 0.0006% |
92 | ![]() | MKR-EUR | $886.60 0.3276230 Eth | $331.88 0.372 MKR | 0.0003% |
93 | ![]() | MKR-USDT | $888.05 0.3276623 Eth | $263.79 0.289 MKR | 0.0002% |
94 | ![]() | MKR-USDT | $888.97 0.3287200 Eth | $101.91 0.115 MKR | 0.0001% |
95 | ![]() | MKR-USD | $885.60 0.3271627 Eth | $82.15 0.090 MKR | 0.0001% |
96 | ![]() | MKR-USDT | $885.97 0.3276107 Eth | $59.76 0.067 MKR | 0.0000% |
97 | ![]() | MKR-USDT | $890.81 0.3291945 Eth | $44.54 0.049 MKR | 0.0000% |
98 | ![]() | MKR-EUR | $891.76 0.3296950 Eth | $44.20 0.049 MKR | 0.0000% |
99 | ![]() | MKR-USDC | $890.27 0.3292005 Eth | $28.35 0.031 MKR | 0.0000% |
100 | ![]() | MKR-USDT | $889.90 0.3288592 Eth | $0.00 0.000 MKR | 0.0000% |
Contract Source Code Verified (Exact Match)
Contract Name:
DSToken
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-11-25 */ // MKR Token // hevm: flattened sources of src/mkr-499.sol pragma solidity ^0.4.15; ////// lib/ds-roles/lib/ds-auth/src/auth.sol // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ contract DSAuthority { function canCall( address src, address dst, bytes4 sig ) public view returns (bool); } contract DSAuthEvents { event LogSetAuthority (address indexed authority); event LogSetOwner (address indexed owner); } contract DSAuth is DSAuthEvents { DSAuthority public authority; address public owner; function DSAuth() public { owner = msg.sender; LogSetOwner(msg.sender); } function setOwner(address owner_) public auth { owner = owner_; LogSetOwner(owner); } function setAuthority(DSAuthority authority_) public auth { authority = authority_; LogSetAuthority(authority); } modifier auth { require(isAuthorized(msg.sender, msg.sig)); _; } function isAuthorized(address src, bytes4 sig) internal view returns (bool) { if (src == address(this)) { return true; } else if (src == owner) { return true; } else if (authority == DSAuthority(0)) { return false; } else { return authority.canCall(src, this, sig); } } } ////// lib/ds-thing/lib/ds-math/src/math.sol /// math.sol -- mixin for inline numerical wizardry // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ contract DSMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x); } function min(uint x, uint y) internal pure returns (uint z) { return x <= y ? x : y; } function max(uint x, uint y) internal pure returns (uint z) { return x >= y ? x : y; } function imin(int x, int y) internal pure returns (int z) { return x <= y ? x : y; } function imax(int x, int y) internal pure returns (int z) { return x >= y ? x : y; } uint constant WAD = 10 ** 18; uint constant RAY = 10 ** 27; function wmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), WAD / 2) / WAD; } function rmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), RAY / 2) / RAY; } function wdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, WAD), y / 2) / y; } function rdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, RAY), y / 2) / y; } // This famous algorithm is called "exponentiation by squaring" // and calculates x^n with x as fixed-point and n as regular unsigned. // // It's O(log n), instead of O(n) for naive repeated multiplication. // // These facts are why it works: // // If n is even, then x^n = (x^2)^(n/2). // If n is odd, then x^n = x * x^(n-1), // and applying the equation for even x gives // x^n = x * (x^2)^((n-1) / 2). // // Also, EVM division is flooring and // floor[(n-1) / 2] = floor[n / 2]. // function rpow(uint x, uint n) internal pure returns (uint z) { z = n % 2 != 0 ? x : RAY; for (n /= 2; n != 0; n /= 2) { x = rmul(x, x); if (n % 2 != 0) { z = rmul(z, x); } } } } ////// lib/ds-thing/lib/ds-note/src/note.sol /// note.sol -- the `note' modifier, for logging calls as events // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ contract DSNote { event LogNote( bytes4 indexed sig, address indexed guy, bytes32 indexed foo, bytes32 indexed bar, uint wad, bytes fax ) anonymous; modifier note { bytes32 foo; bytes32 bar; assembly { foo := calldataload(4) bar := calldataload(36) } LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data); _; } } ////// lib/ds-thing/src/thing.sol // thing.sol - `auth` with handy mixins. your things should be DSThings // Copyright (C) 2017 DappHub, LLC // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ /* import 'ds-auth/auth.sol'; */ /* import 'ds-note/note.sol'; */ /* import 'ds-math/math.sol'; */ contract DSThing is DSAuth, DSNote, DSMath { } ////// lib/ds-token/lib/ds-stop/src/stop.sol /// stop.sol -- mixin for enable/disable functionality // Copyright (C) 2017 DappHub, LLC // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ /* import "ds-auth/auth.sol"; */ /* import "ds-note/note.sol"; */ contract DSStop is DSNote, DSAuth { bool public stopped; modifier stoppable { require(!stopped); _; } function stop() public auth note { stopped = true; } function start() public auth note { stopped = false; } } ////// lib/ds-token/lib/erc20/src/erc20.sol // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.8; */ // Token standard API // https://github.com/ethereum/EIPs/issues/20 contract ERC20 { function totalSupply() public view returns (uint supply); function balanceOf( address who ) public view returns (uint value); function allowance( address owner, address spender ) public view returns (uint _allowance); function transfer( address to, uint value) public returns (bool ok); function transferFrom( address from, address to, uint value) public returns (bool ok); function approve( address spender, uint value ) public returns (bool ok); event Transfer( address indexed from, address indexed to, uint value); event Approval( address indexed owner, address indexed spender, uint value); } ////// lib/ds-token/src/base.sol /// base.sol -- basic ERC20 implementation // Copyright (C) 2015, 2016, 2017 DappHub, LLC // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ /* import "erc20/erc20.sol"; */ /* import "ds-math/math.sol"; */ contract DSTokenBase is ERC20, DSMath { uint256 _supply; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _approvals; function DSTokenBase(uint supply) public { _balances[msg.sender] = supply; _supply = supply; } function totalSupply() public view returns (uint) { return _supply; } function balanceOf(address src) public view returns (uint) { return _balances[src]; } function allowance(address src, address guy) public view returns (uint) { return _approvals[src][guy]; } function transfer(address dst, uint wad) public returns (bool) { return transferFrom(msg.sender, dst, wad); } function transferFrom(address src, address dst, uint wad) public returns (bool) { if (src != msg.sender) { _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad); } _balances[src] = sub(_balances[src], wad); _balances[dst] = add(_balances[dst], wad); Transfer(src, dst, wad); return true; } function approve(address guy, uint wad) public returns (bool) { _approvals[msg.sender][guy] = wad; Approval(msg.sender, guy, wad); return true; } } ////// lib/ds-token/src/token.sol /// token.sol -- ERC20 implementation with minting and burning // Copyright (C) 2015, 2016, 2017 DappHub, LLC // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU 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 General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. /* pragma solidity ^0.4.13; */ /* import "ds-stop/stop.sol"; */ /* import "./base.sol"; */ contract DSToken is DSTokenBase(0), DSStop { bytes32 public symbol; uint256 public decimals = 18; // standard token precision. override to customize function DSToken(bytes32 symbol_) public { symbol = symbol_; } event Mint(address indexed guy, uint wad); event Burn(address indexed guy, uint wad); function approve(address guy) public stoppable returns (bool) { return super.approve(guy, uint(-1)); } function approve(address guy, uint wad) public stoppable returns (bool) { return super.approve(guy, wad); } function transferFrom(address src, address dst, uint wad) public stoppable returns (bool) { if (src != msg.sender && _approvals[src][msg.sender] != uint(-1)) { _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad); } _balances[src] = sub(_balances[src], wad); _balances[dst] = add(_balances[dst], wad); Transfer(src, dst, wad); return true; } function push(address dst, uint wad) public { transferFrom(msg.sender, dst, wad); } function pull(address src, uint wad) public { transferFrom(src, msg.sender, wad); } function move(address src, address dst, uint wad) public { transferFrom(src, dst, wad); } function mint(uint wad) public { mint(msg.sender, wad); } function burn(uint wad) public { burn(msg.sender, wad); } function mint(address guy, uint wad) public auth stoppable { _balances[guy] = add(_balances[guy], wad); _supply = add(_supply, wad); Mint(guy, wad); } function burn(address guy, uint wad) public auth stoppable { if (guy != msg.sender && _approvals[guy][msg.sender] != uint(-1)) { _approvals[guy][msg.sender] = sub(_approvals[guy][msg.sender], wad); } _balances[guy] = sub(_balances[guy], wad); _supply = sub(_supply, wad); Burn(guy, wad); } // Optional token name bytes32 public name = ""; function setName(bytes32 name_) public auth { name = name_; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name_","type":"bytes32"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","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":"symbol","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"wad","type":"uint256"}],"name":"pull","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"symbol_","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","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
606060405260126006556000600755341561001957600080fd5b604051602080610dd283398101604052808051600160a060020a03331660008181526001602052604080822082905590805560048054600160a060020a0319168317905591935091507fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed94905160405180910390a2600555610d338061009f6000396000f3006060604052600436106101485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461014d57806307da68f514610172578063095ea7b31461018757806313af4035146101bd57806318160ddd146101dc57806323b872dd146101ef578063313ce5671461021757806340c10f191461022a57806342966c681461024c5780635ac801fe1461026257806370a082311461027857806375f12b21146102975780637a9e5e4b146102aa5780638da5cb5b146102c957806395d89b41146102f85780639dc29fac1461030b578063a0712d681461032d578063a9059cbb14610343578063b753a98c14610365578063bb35783b14610387578063be9a6555146103af578063bf7e214f146103c2578063daea85c5146103d5578063dd62ed3e146103f4578063f2d5d56b14610419575b600080fd5b341561015857600080fd5b61016061043b565b60405190815260200160405180910390f35b341561017d57600080fd5b610185610441565b005b341561019257600080fd5b6101a9600160a060020a03600435166024356104e0565b604051901515815260200160405180910390f35b34156101c857600080fd5b610185600160a060020a036004351661050d565b34156101e757600080fd5b61016061058c565b34156101fa57600080fd5b6101a9600160a060020a0360043581169060243516604435610592565b341561022257600080fd5b610160610707565b341561023557600080fd5b610185600160a060020a036004351660243561070d565b341561025757600080fd5b6101856004356107d3565b341561026d57600080fd5b6101856004356107e0565b341561028357600080fd5b610160600160a060020a0360043516610806565b34156102a257600080fd5b6101a9610821565b34156102b557600080fd5b610185600160a060020a0360043516610831565b34156102d457600080fd5b6102dc6108b0565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b6101606108bf565b341561031657600080fd5b610185600160a060020a03600435166024356108c5565b341561033857600080fd5b610185600435610a33565b341561034e57600080fd5b6101a9600160a060020a0360043516602435610a3d565b341561037057600080fd5b610185600160a060020a0360043516602435610a4a565b341561039257600080fd5b610185600160a060020a0360043581169060243516604435610a5a565b34156103ba57600080fd5b610185610a6b565b34156103cd57600080fd5b6102dc610b04565b34156103e057600080fd5b6101a9600160a060020a0360043516610b13565b34156103ff57600080fd5b610160600160a060020a0360043581169060243516610b39565b341561042457600080fd5b610185600160a060020a0360043516602435610b64565b60075481565b61045733600035600160e060020a031916610b6f565b151561046257600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a450506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b60045460009060a060020a900460ff16156104fa57600080fd5b6105048383610c7b565b90505b92915050565b61052333600035600160e060020a031916610b6f565b151561052e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60005490565b60045460009060a060020a900460ff16156105ac57600080fd5b33600160a060020a031684600160a060020a0316141580156105f65750600160a060020a038085166000908152600260209081526040808320339094168352929052205460001914155b1561065457600160a060020a038085166000908152600260209081526040808320339094168352929052205461062c9083610ce7565b600160a060020a03808616600090815260026020908152604080832033909416835292905220555b600160a060020a0384166000908152600160205260409020546106779083610ce7565b600160a060020a0380861660009081526001602052604080822093909355908516815220546106a69083610cf7565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60065481565b61072333600035600160e060020a031916610b6f565b151561072e57600080fd5b60045460a060020a900460ff161561074557600080fd5b600160a060020a0382166000908152600160205260409020546107689082610cf7565b600160a060020a0383166000908152600160205260408120919091555461078f9082610cf7565b600055600160a060020a0382167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405190815260200160405180910390a25050565b6107dd33826108c5565b50565b6107f633600035600160e060020a031916610b6f565b151561080157600080fd5b600755565b600160a060020a031660009081526001602052604090205490565b60045460a060020a900460ff1681565b61084733600035600160e060020a031916610b6f565b151561085257600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600454600160a060020a031681565b60055481565b6108db33600035600160e060020a031916610b6f565b15156108e657600080fd5b60045460a060020a900460ff16156108fd57600080fd5b33600160a060020a031682600160a060020a0316141580156109475750600160a060020a038083166000908152600260209081526040808320339094168352929052205460001914155b156109a557600160a060020a038083166000908152600260209081526040808320339094168352929052205461097d9082610ce7565b600160a060020a03808416600090815260026020908152604080832033909416835292905220555b600160a060020a0382166000908152600160205260409020546109c89082610ce7565b600160a060020a038316600090815260016020526040812091909155546109ef9082610ce7565b600055600160a060020a0382167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405190815260200160405180910390a25050565b6107dd338261070d565b6000610504338484610592565b610a55338383610592565b505050565b610a65838383610592565b50505050565b610a8133600035600160e060020a031916610b6f565b1515610a8c57600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a450506004805474ff000000000000000000000000000000000000000019169055565b600354600160a060020a031681565b60045460009060a060020a900460ff1615610b2d57600080fd5b61050782600019610c7b565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b610a55823383610592565b600030600160a060020a031683600160a060020a03161415610b9357506001610507565b600454600160a060020a0384811691161415610bb157506001610507565b600354600160a060020a03161515610bcb57506000610507565b600354600160a060020a031663b70096138430856000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b1515610c5957600080fd5b6102c65a03f11515610c6a57600080fd5b505050604051805190509050610507565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b8082038281111561050757600080fd5b8082018281101561050757600080fd00a165627a7a72305820c3b70a68c1ccfc4b88f478523cfc01b3108a40e2c6d0132d5b736b0c3034972800294d4b520000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6060604052600436106101485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461014d57806307da68f514610172578063095ea7b31461018757806313af4035146101bd57806318160ddd146101dc57806323b872dd146101ef578063313ce5671461021757806340c10f191461022a57806342966c681461024c5780635ac801fe1461026257806370a082311461027857806375f12b21146102975780637a9e5e4b146102aa5780638da5cb5b146102c957806395d89b41146102f85780639dc29fac1461030b578063a0712d681461032d578063a9059cbb14610343578063b753a98c14610365578063bb35783b14610387578063be9a6555146103af578063bf7e214f146103c2578063daea85c5146103d5578063dd62ed3e146103f4578063f2d5d56b14610419575b600080fd5b341561015857600080fd5b61016061043b565b60405190815260200160405180910390f35b341561017d57600080fd5b610185610441565b005b341561019257600080fd5b6101a9600160a060020a03600435166024356104e0565b604051901515815260200160405180910390f35b34156101c857600080fd5b610185600160a060020a036004351661050d565b34156101e757600080fd5b61016061058c565b34156101fa57600080fd5b6101a9600160a060020a0360043581169060243516604435610592565b341561022257600080fd5b610160610707565b341561023557600080fd5b610185600160a060020a036004351660243561070d565b341561025757600080fd5b6101856004356107d3565b341561026d57600080fd5b6101856004356107e0565b341561028357600080fd5b610160600160a060020a0360043516610806565b34156102a257600080fd5b6101a9610821565b34156102b557600080fd5b610185600160a060020a0360043516610831565b34156102d457600080fd5b6102dc6108b0565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b6101606108bf565b341561031657600080fd5b610185600160a060020a03600435166024356108c5565b341561033857600080fd5b610185600435610a33565b341561034e57600080fd5b6101a9600160a060020a0360043516602435610a3d565b341561037057600080fd5b610185600160a060020a0360043516602435610a4a565b341561039257600080fd5b610185600160a060020a0360043581169060243516604435610a5a565b34156103ba57600080fd5b610185610a6b565b34156103cd57600080fd5b6102dc610b04565b34156103e057600080fd5b6101a9600160a060020a0360043516610b13565b34156103ff57600080fd5b610160600160a060020a0360043581169060243516610b39565b341561042457600080fd5b610185600160a060020a0360043516602435610b64565b60075481565b61045733600035600160e060020a031916610b6f565b151561046257600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a450506004805474ff0000000000000000000000000000000000000000191660a060020a179055565b60045460009060a060020a900460ff16156104fa57600080fd5b6105048383610c7b565b90505b92915050565b61052333600035600160e060020a031916610b6f565b151561052e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60005490565b60045460009060a060020a900460ff16156105ac57600080fd5b33600160a060020a031684600160a060020a0316141580156105f65750600160a060020a038085166000908152600260209081526040808320339094168352929052205460001914155b1561065457600160a060020a038085166000908152600260209081526040808320339094168352929052205461062c9083610ce7565b600160a060020a03808616600090815260026020908152604080832033909416835292905220555b600160a060020a0384166000908152600160205260409020546106779083610ce7565b600160a060020a0380861660009081526001602052604080822093909355908516815220546106a69083610cf7565b600160a060020a03808516600081815260016020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60065481565b61072333600035600160e060020a031916610b6f565b151561072e57600080fd5b60045460a060020a900460ff161561074557600080fd5b600160a060020a0382166000908152600160205260409020546107689082610cf7565b600160a060020a0383166000908152600160205260408120919091555461078f9082610cf7565b600055600160a060020a0382167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405190815260200160405180910390a25050565b6107dd33826108c5565b50565b6107f633600035600160e060020a031916610b6f565b151561080157600080fd5b600755565b600160a060020a031660009081526001602052604090205490565b60045460a060020a900460ff1681565b61084733600035600160e060020a031916610b6f565b151561085257600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600454600160a060020a031681565b60055481565b6108db33600035600160e060020a031916610b6f565b15156108e657600080fd5b60045460a060020a900460ff16156108fd57600080fd5b33600160a060020a031682600160a060020a0316141580156109475750600160a060020a038083166000908152600260209081526040808320339094168352929052205460001914155b156109a557600160a060020a038083166000908152600260209081526040808320339094168352929052205461097d9082610ce7565b600160a060020a03808416600090815260026020908152604080832033909416835292905220555b600160a060020a0382166000908152600160205260409020546109c89082610ce7565b600160a060020a038316600090815260016020526040812091909155546109ef9082610ce7565b600055600160a060020a0382167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405190815260200160405180910390a25050565b6107dd338261070d565b6000610504338484610592565b610a55338383610592565b505050565b610a65838383610592565b50505050565b610a8133600035600160e060020a031916610b6f565b1515610a8c57600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a450506004805474ff000000000000000000000000000000000000000019169055565b600354600160a060020a031681565b60045460009060a060020a900460ff1615610b2d57600080fd5b61050782600019610c7b565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b610a55823383610592565b600030600160a060020a031683600160a060020a03161415610b9357506001610507565b600454600160a060020a0384811691161415610bb157506001610507565b600354600160a060020a03161515610bcb57506000610507565b600354600160a060020a031663b70096138430856000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b1515610c5957600080fd5b6102c65a03f11515610c6a57600080fd5b505050604051805190509050610507565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b8082038281111561050757600080fd5b8082018281101561050757600080fd00a165627a7a72305820c3b70a68c1ccfc4b88f478523cfc01b3108a40e2c6d0132d5b736b0c303497280029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
4d4b520000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : symbol_ (bytes32): 0x4d4b520000000000000000000000000000000000000000000000000000000000
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 4d4b520000000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://c3b70a68c1ccfc4b88f478523cfc01b3108a40e2c6d0132d5b736b0c30349728
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.