Skip to content

Commit

Permalink
Bytecoin v.1.0.10 release
Browse files Browse the repository at this point in the history
  • Loading branch information
Antonio Juarez committed Apr 11, 2016
1 parent 64feea7 commit 9966ce9
Show file tree
Hide file tree
Showing 591 changed files with 3,320 additions and 1,600 deletions.
22 changes: 11 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,22 @@ set(CMAKE_SKIP_PACKAGE_ALL_DEPENDENCY ON)
set(CMAKE_SUPPRESS_REGENERATION ON)
enable_testing()
# copy CTestCustom.cmake to build dir to disable long running tests in 'make test'
configure_file(${CMAKE_SOURCE_DIR}/CTestCustom.cmake ${CMAKE_BINARY_DIR})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake ${CMAKE_CURRENT_BINARY_DIR})

project(Bytecoin)

include_directories(include src external "${CMAKE_BINARY_DIR}/version")
include_directories(include src external "${CMAKE_CURRENT_BINARY_DIR}/version")
if(APPLE)
include_directories(SYSTEM /usr/include/malloc)
enable_language(ASM)
endif()

if(MSVC)
include_directories(src/Platform/Windows)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/Platform/Windows)
elseif(APPLE)
include_directories(src/Platform/OSX)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/Platform/OSX)
else()
include_directories(src/Platform/Linux)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/Platform/Linux)
endif()

set(STATIC ${MSVC} CACHE BOOL "Link libraries statically")
Expand All @@ -38,7 +38,7 @@ if(MSVC)
string(REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
endforeach()
endif()
include_directories(SYSTEM src/platform/msc)
include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/src/platform/msc)
else()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
# This option has no effect in glibc version less than 2.20.
Expand Down Expand Up @@ -120,27 +120,27 @@ elseif(NOT MSVC)
endif()

set(COMMIT_ID_IN_VERSION ON CACHE BOOL "Include commit ID in version")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/version")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/version")
if (NOT COMMIT_ID_IN_VERSION)
set(VERSION "${VERSION}-unknown")
configure_file("src/version.h.in" "version/version.h")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/version/version.h")
add_custom_target(version ALL)
elseif(DEFINED COMMIT)
string(REPLACE "." "\\." VERSION_RE "${VERSION}")
if(NOT REFS MATCHES "(\\(|, )tag: v${VERSION_RE}(\\)|, )")
set(VERSION "${VERSION}-g${COMMIT}")
endif()
configure_file("src/version.h.in" "version/version.h")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/version/version.h")
add_custom_target(version ALL)
else()
find_package(Git QUIET)
if(Git_FOUND OR GIT_FOUND)
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
add_custom_target(version ALL "${CMAKE_COMMAND}" "-D" "VERSION=${VERSION}" "-D" "GIT=${GIT_EXECUTABLE}" "-D" "TO=${CMAKE_BINARY_DIR}/version/version.h" "-P" "src/version.cmake" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
add_custom_target(version ALL "${CMAKE_COMMAND}" "-D" "VERSION=${VERSION}" "-D" "GIT=${GIT_EXECUTABLE}" "-D" "TO=${CMAKE_CURRENT_BINARY_DIR}/version/version.h" "-P" "${CMAKE_CURRENT_SOURCE_DIR}/src/version.cmake" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
else()
message(STATUS "WARNING: Git was not found!")
set(VERSION "${VERSION}-unknown")
configure_file("src/version.h.in" "version/version.h")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/version/version.h")
add_custom_target(version ALL)
endif()
endif()
Expand Down
6 changes: 6 additions & 0 deletions ReleaseNotes.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Release notes 1.0.10

- Blocksize increase
- Fusion transactions for Bytecoin RPC Wallet
- Bytecoin RPC Wallet API improvements

Release notes 1.0.9

- New API for Bytecoin RPC Wallet
Expand Down
2 changes: 1 addition & 1 deletion include/BlockchainExplorerData.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/CryptoNote.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/CryptoTypes.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/IBlockchainExplorer.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
17 changes: 16 additions & 1 deletion include/INode.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down Expand Up @@ -64,6 +64,20 @@ struct BlockShortEntry {
std::vector<TransactionShortInfo> txsShortInfo;
};

struct BlockHeaderInfo {
uint32_t index;
uint8_t majorVersion;
uint8_t minorVersion;
uint64_t timestamp;
Crypto::Hash hash;
Crypto::Hash prevHash;
uint32_t nonce;
bool isAlternative;
uint32_t depth; // last block index = current block index + depth
difficulty_type difficulty;
uint64_t reward;
};

class INode {
public:
typedef std::function<void(std::error_code)> Callback;
Expand All @@ -81,6 +95,7 @@ class INode {
virtual uint32_t getLocalBlockCount() const = 0;
virtual uint32_t getKnownBlockCount() const = 0;
virtual uint64_t getLastLocalBlockTimestamp() const = 0;
virtual BlockHeaderInfo getLastLocalBlockHeaderInfo() const = 0;

virtual void relayTransaction(const Transaction& transaction, const Callback& callback) = 0;
virtual void getRandomOutsByAmounts(std::vector<uint64_t>&& amounts, uint64_t outsCount, std::vector<CryptoNote::COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS::outs_for_amount>& result, const Callback& callback) = 0;
Expand Down
2 changes: 1 addition & 1 deletion include/IObservable.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/IStreamSerializable.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/ITransaction.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/ITransfersContainer.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion include/ITransfersSynchronizer.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
4 changes: 2 additions & 2 deletions include/IWallet.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down Expand Up @@ -132,7 +132,7 @@ class IWallet {
virtual void shutdown() = 0;

virtual void changePassword(const std::string& oldPassword, const std::string& newPassword) = 0;
virtual void save(std::ostream& destination, bool saveDetails = true, bool saveCache = true) = 0;
virtual void save(std::ostream& destination, bool saveDetails = true, bool saveCache = true, bool encrypt = true) = 0;

virtual size_t getAddressCount() const = 0;
virtual std::string getAddress(size_t index) const = 0;
Expand Down
2 changes: 1 addition & 1 deletion include/IWalletLegacy.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
7 changes: 5 additions & 2 deletions src/BlockchainExplorer/BlockchainExplorer.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down Expand Up @@ -458,8 +458,11 @@ uint64_t BlockchainExplorer::getFullRewardMaxBlockSize(uint8_t majorVersion) {
if (state.load() != INITIALIZED) {
throw std::system_error(make_error_code(CryptoNote::error::BlockchainExplorerErrorCodes::NOT_INITIALIZED));
}
if (majorVersion > 1) {

if (majorVersion >= BLOCK_MAJOR_VERSION_3) {
return parameters::CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE;
} else if (majorVersion == BLOCK_MAJOR_VERSION_2) {
return parameters::CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2;
} else {
return parameters::CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V1;
}
Expand Down
2 changes: 1 addition & 1 deletion src/BlockchainExplorer/BlockchainExplorer.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
9 changes: 5 additions & 4 deletions src/BlockchainExplorer/BlockchainExplorerDataBuilder.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down Expand Up @@ -146,14 +146,15 @@ bool BlockchainExplorerDataBuilder::fillBlockDetails(const Block &block, BlockDe
return false;
}
}

uint64_t maxReward = 0;
uint64_t currentReward = 0;
int64_t emissionChange = 0;
bool penalizeFee = block.majorVersion >= 2;
if (!core.getBlockReward(blockDetails.sizeMedian, 0, prevBlockGeneratedCoins, 0, penalizeFee, maxReward, emissionChange)) {
if (!core.getBlockReward(block.majorVersion, blockDetails.sizeMedian, 0, prevBlockGeneratedCoins, 0, maxReward, emissionChange)) {
return false;
}
if (!core.getBlockReward(blockDetails.sizeMedian, blockDetails.transactionsCumulativeSize, prevBlockGeneratedCoins, 0, penalizeFee, currentReward, emissionChange)) {

if (!core.getBlockReward(block.majorVersion, blockDetails.sizeMedian, blockDetails.transactionsCumulativeSize, prevBlockGeneratedCoins, 0, currentReward, emissionChange)) {
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion src/BlockchainExplorer/BlockchainExplorerDataBuilder.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/BlockchainExplorer/BlockchainExplorerErrors.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/BlockchainExplorer/BlockchainExplorerErrors.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ArrayRef.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ArrayView.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/Base58.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/Base58.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/BlockingQueue.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/BlockingQueue.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/CommandLine.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/CommandLine.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ConsoleHandler.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ConsoleHandler.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ConsoleTools.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ConsoleTools.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/IInputStream.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/IInputStream.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/IOutputStream.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/IOutputStream.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/JsonValue.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/JsonValue.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/Math.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/Math.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/MemoryInputStream.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/MemoryInputStream.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
2 changes: 1 addition & 1 deletion src/Common/ObserverManager.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012-2015, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2012-2016, The CryptoNote developers, The Bytecoin developers
//
// This file is part of Bytecoin.
//
Expand Down
Loading

0 comments on commit 9966ce9

Please sign in to comment.