<?xml version="1.0" encoding="UTF-8"?>
<!--

  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.

-->
<projectDescription>
	<name>blazeds-core</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
	</natures>
	<linkedResources>
		<link>
			<name>classes</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/core/classes</locationURI>
		</link>
		<link>
			<name>java</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/core/src</locationURI>
		</link>
		<link>
			<name>test</name>
			<type>2</type>
			<locationURI>BLAZEDS_HOME/modules/core/test/src</locationURI>
		</link>
	</linkedResources>
</projectDescription>
