/*
 * Copyright 2003 Mike McCormack for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "resource.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
  IDS_LANCONNECTION "LAN Connection"
  IDS_CERT_CA_INVALID   "The certificate is issued by an unknown or untrusted publisher."
  IDS_CERT_DATE_INVALID "The date on the certificate is invalid."
  IDS_CERT_CN_INVALID   "The name on the certificate does not match the site."
  IDS_CERT_ERRORS       "There is at least one unspecified security problem with this certificate."
}

#define WINE_FILEDESCRIPTION_STR "Wine Internet Connectivity"
#define WINE_FILENAME_STR "wininet.dll"
#define WINE_FILEVERSION 6,0,2800,1106
#define WINE_FILEVERSION_STR "6.0.2800.1106"
#define WINE_PRODUCTVERSION 6,0,2800,1106
#define WINE_PRODUCTVERSION_STR "6.0.2800.1106"

#include "wine/wine_common_ver.rc"
