/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* Library identity and versioning */

#include "nss.h"

#if defined(DEBUG)
#define _DEBUG_STRING " (debug)"
#else
#define _DEBUG_STRING ""
#endif

#if defined(DONT_EMBED_BUILD_METADATA) && !defined(OFFICIAL_BUILD)
#define _DATE_AND_TIME "Sep 02 2008 08:00:00"
#else
#define _DATE_AND_TIME __DATE__ " " __TIME__
#endif


/*
 * Version information for the 'ident' and 'what commands
 *
 * NOTE: the first component of the concatenated rcsid string
 * must not end in a '$' to prevent rcs keyword substitution.
 */
const char __nss_ssl_rcsid[] = "$Header: NSS " NSS_VERSION _DEBUG_STRING
        "  " _DATE_AND_TIME " $";
const char __nss_ssl_sccsid[] = "@(#)NSS " NSS_VERSION _DEBUG_STRING
        "  " _DATE_AND_TIME;
