/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */



/////////////////////////////////////////////////////////////////////////////

// Version stamp for this .DLL

#include <windows.h>

#include <ver.h>



VS_VERSION_INFO     VERSIONINFO

  FILEVERSION       4 // major, minor, release (alpha 1), build #

  PRODUCTVERSION    4

  FILEFLAGSMASK     0

  FILEFLAGS         0 // final version

  FILEOS            VOS_DOS_WINDOWS16

  FILETYPE          VFT_DLL

  FILESUBTYPE       0   // not used

BEGIN

    BLOCK "StringFileInfo"

    BEGIN

        BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual

        BEGIN

            VALUE "CompanyName",     "Netscape Communications Corporation\0"

            VALUE "FileDescription", "Netscape 16-bit JavaScript Debugger Module\0"

            VALUE "FileVersion",     "4.0\0"

            VALUE "InternalName",    "JSD1640\0"

            VALUE "LegalCopyright",  "Copyright Netscape Communications. 1994-96\0"

            VALUE "LegalTrademarks", "Netscape, Mozilla\0"

            VALUE "OriginalFilename","JSD1640.DLL\0"

            VALUE "ProductName",     "NETSCAPE\0"

            VALUE "ProductVersion",  "4.0\0"

        END

    END

END

