###############################################################################
# Copyright (c) 2000, 2014 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
bin.includes = about.html,\
               about.ini,\
               about.mappings,\
               about.properties,\
               eclipse_lg.png,\
               eclipse_lg@2x.png,\
               eclipse16.png,\
               eclipse32.png,\
               eclipse48.png,\
               eclipse256.png,\
               plugin_customization.ini,\
               plugin_customization.properties,\
               plugin.xml,\
               plugin.properties,\
               splash.bmp,\
               intro/,\
               platform.jar,\
               META-INF/,\
               narrow_book.css,\
               disabled_book.css,\
               book.css,\
               macosx_narrow_book.css,\
               intro-eclipse.svg,\
               introData.xml,\
               helpData.xml,\
               images/,\
               LegacyIDE.e4xmi,\
               eclipse128.png,\
               eclipse64.png,\
               eclipse512.png,\
               eclipse24.png,\
               eclipse22.png,\
               eclipse1024.png,\
               org.eclipse.ui.intro.universal.solstice/
src.includes = about.html
source.platform.jar = src-intro/
