<!--
  Copyright (c) 2013-2015 LAAS-CNRS (www.laas.fr) 
  7 Colonel Roche 31077 Toulouse - France
  
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Public License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/legal/epl-v10.html
  
  Contributors:
      Thierry Monteil (Project co-founder) - Management and initial specification, 
  		conception and documentation.
      Mahdi Ben Alaya (Project co-founder) - Management and initial specification, 
  		conception, implementation, test and documentation.
      Christophe Chassot - Management and initial specification.
      Khalil Drira - Management and initial specification.
      Yassine Banouar - Initial specification, conception, implementation, test 
  		and documentation.
      Guillaume Garzone - Conception, implementation, test and documentation.
      Francois Aissaoui - Conception, implementation, test and documentation.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>org.eclipse.om2m.comm.http</artifactId>
  <packaging>eclipse-plugin</packaging>
  <name>org.eclipse.om2m :: comm http</name>
  <description>org.eclipse.om2m :: comm http</description>
  <parent>
  	<groupId>org.eclipse.om2m</groupId>
  	<artifactId>org.eclipse.om2m</artifactId>
  	<version>0.8.0-SNAPSHOT</version>
  </parent>
</project>
