/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#include "macros.inc"

STD_RES_FILE( gid_File_Res_Basctl, basctl)

STD_RES_FILE( gid_File_Res_Bib, bib )

STD_RES_FILE( gid_File_Res_Cal, cal )

STD_RES_FILE( gid_File_Res_Chartcontroller, chartcontroller )

STD_RES_FILE( gid_File_Res_Dba, dba)

STD_RES_FILE( gid_File_Res_Sdbt, sdbt)

STD_RES_FILE( gid_File_Res_Dbmm, dbmm)

STD_RES_FILE( gid_File_Res_Dbw, dbw )

STD_RES_FILE( gid_File_Res_Dkt, dkt)

STD_RES_FILE( gid_File_Res_Eur, eur )

STD_RES_FILE( gid_File_Res_Frm, frm)

STD_RES_FILE( gid_File_Res_Fwe, fwe)

STD_RES_FILE( gid_File_Res_Fps_Office, fps_office)

STD_RES_FILE( gid_File_Res_Gal, gal )

STD_RES_FILE( gid_File_Res_Imp, imp )

STD_RES_FILE( gid_File_Res_Deployment, deployment )
STD_RES_FILE( gid_File_Res_DeploymentGui, deploymentgui )

STD_RES_FILE( gid_File_Res_Ofa, ofa )

STD_RES_FILE( gid_File_Res_Pcr, pcr)

STD_RES_FILE( gid_File_Res_Pdffilter, pdffilter)

STD_RES_FILE( gid_File_Res_Preload, preload)

#ifdef UNX

STD_RES_FILE( gid_File_Res_San, san )

#endif

STD_RES_FILE( gid_File_Res_Sd, sd )

STD_RES_FILE( gid_File_Res_Sfx, sfx )

#if defined(UNX) && !defined(QUARTZ)

STD_RES_FILE( gid_File_Res_Spa, spa )

#endif

STD_RES_FILE( gid_File_Res_Sb, sb )

STD_RES_FILE( gid_File_Res_Svl, svl )

STD_RES_FILE( gid_File_Res_Svt, svt )

STD_RES_FILE( gid_File_Res_Svx, svx )
STD_RES_FILE( gid_File_Res_Editeng, editeng )
STD_RES_FILE( gid_File_Res_TextConversionDlgs, textconversiondlgs )

STD_RES_FILE( gid_File_Res_Cui, cui )

STD_RES_FILE( gid_File_Res_Sw, sw )


STD_RES_FILE( gid_File_Res_Acc, acc )

STD_RES_FILE( gid_File_Res_Tpl, tpl )

STD_RES_FILE( gid_File_Res_Uui, uui )

STD_RES_FILE( gid_File_Res_Vcl, vcl )

STD_RES_FILE( gid_File_Res_Wzi, wzi )

//STD_RES_FILE( gid_File_Res_Wwz, wwz )

STD_RES_FILE( gid_File_Res_Xsltdlg, xsltdlg )

STD_RES_FILE( gid_File_Res_AVMedia, avmedia )

#ifdef ENABLE_XMLSEC
STD_RES_FILE( gid_File_Res_XMLSecurity, xmlsec )
#endif

STD_RES_FILE( gid_File_Res_UpdChk, updchk )

#if defined(ENABLE_ONLINE_UPDATE)
STD_RES_FILE( gid_File_Res_Upd, upd )
#endif

STD_RES_FILE( gid_File_Res_T602Filter, t602filter )

STD_RES_FILE( gid_File_Res_Forui, forui )
STD_RES_FILE( gid_File_Res_For, for )

STD_RES_FILE( gid_File_Res_PresentationMinimizer, minimizer )

