# disable listing of feature in any category
properties.1.name=org.eclipse.equinox.p2.type.category
properties.1.value=false

#instructions.configure=\
#org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:http${#58}//download.eclipse.org/technology/epp/packages/helios,name:EPP Packages Repository);\
#org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:http${#58}//download.eclipse.org/technology/epp/packages/helios,name:EPP Packages Repository);

#instructions.unconfigure=\
#org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:http${#58}//download.eclipse.org/technology/epp/packages/helios);\
#org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:http${#58}//download.eclipse.org/technology/epp/packages/helios);

