// Microsoft Visual C++ generated resource script.
//
#include "autoversion.h"
#include "winres.h"

#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION __VERSION_MAJOR__,__BUILD_NUMBER_MAJOR__,__BUILD_NUMBER_MINOR__,__BUILD_NUMBER_VARIANT__
 PRODUCTVERSION __VERSION_MAJOR__,__VERSION_MINOR__,__VERSION_TINY__,0
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "WebKit QuickTime Movie Dynamic Link Library"
            VALUE "FileVersion", __VERSION_TEXT__
            VALUE "CompanyName", "Apple Inc."
            VALUE "InternalName", "WebKit"
            VALUE "LegalCopyright", "Copyright Apple Inc. 2007-2008"
            VALUE "OriginalFilename", "QTMovieWin.dll"
            VALUE "ProductName", "WebKit"
            VALUE "ProductVersion", __BUILD_NUMBER_SHORT__
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END
