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

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "setup_resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include ""windows.h""\r\n"
    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_SETUP               ICON                    "setup.ico"
#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////

#if defined(GOOGLE_CHROME_BUILD)

/////////////////////////////////////////////////////////////////////////////
//
// EULA
//
IDR_EULA_ICO.PNG      EULA   "..\\..\\app\\theme\\google_chrome\\eula_icon.png"

/////////////////////////////////////////////////////////////////////////////
//
// HTML
//

IDR_EULA_CSS.CSS        HTML    "eula\\oem.css"
IDR_EULA_JSC.JS         HTML   "eula\\oem.js"

IDR_OEMPG_AR.HTML       HTML   "eula\\oem_ar.html"
IDR_OEMPG_BG.HTML       HTML   "eula\\oem_bg.html"
IDR_OEMPG_CA.HTML       HTML   "eula\\oem_ca.html"
IDR_OEMPG_CS.HTML       HTML   "eula\\oem_cs.html"
IDR_OEMPG_DA.HTML       HTML   "eula\\oem_da.html"
IDR_OEMPG_DE.HTML       HTML   "eula\\oem_de.html"
IDR_OEMPG_EL.HTML       HTML   "eula\\oem_el.html"
IDR_OEMPG_EN.HTML       HTML   "eula\\oem_en.html"
IDR_OEMPG_EN_GB.HTML    HTML   "eula\\oem_en-GB.html"
IDR_OEMPG_ES.HTML       HTML   "eula\\oem_es.html"
IDR_OEMPG_ES_419.HTML   HTML   "eula\\oem_es-419.html"
IDR_OEMPG_ET.HTML       HTML   "eula\\oem_et.html"
IDR_OEMPG_FI.HTML       HTML   "eula\\oem_fi.html"
IDR_OEMPG_FIL.HTML      HTML   "eula\\oem_fil.html"
IDR_OEMPG_FR.HTML       HTML   "eula\\oem_fr.html"
IDR_OEMPG_HI.HTML       HTML   "eula\\oem_hi.html"
IDR_OEMPG_HR.HTML       HTML   "eula\\oem_hr.html"
IDR_OEMPG_HU.HTML       HTML   "eula\\oem_hu.html"
IDR_OEMPG_ID.HTML       HTML   "eula\\oem_id.html"
IDR_OEMPG_IT.HTML       HTML   "eula\\oem_it.html"
IDR_OEMPG_JA.HTML       HTML   "eula\\oem_ja.html"
IDR_OEMPG_KO.HTML       HTML   "eula\\oem_ko.html"
IDR_OEMPG_LT.HTML       HTML   "eula\\oem_lt.html"
IDR_OEMPG_LV.HTML       HTML   "eula\\oem_lv.html"
IDR_OEMPG_NL.HTML       HTML   "eula\\oem_nl.html"
IDR_OEMPG_PL.HTML       HTML   "eula\\oem_pl.html"
IDR_OEMPG_PT_BR.HTML    HTML   "eula\\oem_pt-BR.html"
IDR_OEMPG_PT_PT.HTML    HTML   "eula\\oem_pt-PT.html"
IDR_OEMPG_RO.HTML       HTML   "eula\\oem_ro.html"
IDR_OEMPG_RU.HTML       HTML   "eula\\oem_ru.html"
IDR_OEMPG_SK.HTML       HTML   "eula\\oem_sk.html"
IDR_OEMPG_SL.HTML       HTML   "eula\\oem_sl.html"
IDR_OEMPG_SR.HTML       HTML   "eula\\oem_sr.html"
IDR_OEMPG_SV.HTML       HTML   "eula\\oem_sv.html"
IDR_OEMPG_TH.HTML       HTML   "eula\\oem_th.html"
IDR_OEMPG_TR.HTML       HTML   "eula\\oem_tr.html"
IDR_OEMPG_UK.HTML       HTML   "eula\\oem_uk.html"
IDR_OEMPG_VI.HTML       HTML   "eula\\oem_vi.html"
IDR_OEMPG_ZH_CN.HTML    HTML   "eula\\oem_zh-CN.html"
IDR_OEMPG_ZH_TW.HTML    HTML   "eula\\oem_zh-TW.html"

#endif  // defined(GOOGLE_CHROME_BUILD)

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// GOOGLEUPDATEAPPLICATIONCOMMANDS is a "well-known" marker resource defined
// by Omaha. Executables must both be signed by Google and contain the marker
// in order to expose application commands.
//
#define IDR_GOOGLE_UPDATE_APP_COMMANDS_MARKUP 1

IDR_GOOGLE_UPDATE_APP_COMMANDS_MARKUP GOOGLEUPDATEAPPLICATIONCOMMANDS { 1L }

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

