<?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.
-->
<project xmlns="http://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.java.j2seproject</type>
    <configuration>
        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
            <name>Apache SIS on GeoAPI 3.1</name>
            <source-roots>
                <root id="src.local-src.dir" name="Local sources (unversioned)"/>
                <root id="src.javafx.dir" name="JavaFX application"/>
                <root id="src.webapp.dir" name="Web application"/>
                <root id="src.console.dir" name="Console"/>
                <root id="src.portrayal.dir" name="Portrayal"/>
                <root id="src.earth-obs.dir" name="Earth observation"/>
                <root id="src.geotiff.dir" name="GeoTIFF"/>
                <root id="src.netcdf.dir" name="NetCDF"/>
                <root id="src.shapefile.dir" name="Shapefile"/>
                <root id="src.sql.dir" name="SQLStore"/>
                <root id="src.xmlstore.dir" name="XMLStore"/>
                <root id="src.storage.dir" name="Storage"/>
                <root id="src.feature.dir" name="Feature"/>
                <root id="src.referencing.dir" name="Referencing"/>
                <root id="src.ref-by-id.dir" name="Referencing by identifiers"/>
                <root id="src.metadata.dir" name="Metadata"/>
                <root id="src.utility.dir" name="Utility"/>
                <root id="src.fra-profile.dir" name="French profile"/>
                <root id="src.jpn-profile.dir" name="Japanese profile"/>
            </source-roots>
            <test-roots>
                <root id="test.javafx.dir" name="Test JavaFX application"/>
                <root id="test.console.dir" name="Test Console"/>
                <root id="test.portrayal.dir" name="Test Portrayal"/>
                <root id="test.earth-obs.dir" name="Test Earth observation"/>
                <root id="test.geotiff.dir" name="Test GeoTIFF"/>
                <root id="test.netcdf.dir" name="Test NetCDF"/>
                <root id="test.shapefile.dir" name="Test Shapefile"/>
                <root id="test.sql.dir" name="Test SQLStore"/>
                <root id="test.xmlstore.dir" name="Test XMLStore"/>
                <root id="test.storage.dir" name="Test Storage"/>
                <root id="test.feature.dir" name="Test Feature"/>
                <root id="test.referencing.dir" name="Test Referencing"/>
                <root id="test.ref-by-id.dir" name="Test Referencing by identifiers"/>
                <root id="test.metadata.dir" name="Test Metadata"/>
                <root id="test.utility.dir" name="Test Utility"/>
                <root id="test.fra-profile.dir" name="Test French profile"/>
                <root id="test.jpn-profile.dir" name="Test Japanese profile"/>
            </test-roots>
        </data>
        <spellchecker-wordlist xmlns="http://www.netbeans.org/ns/spellchecker-wordlist/1">
            <word>accessor</word>
            <word>antimeridian</word>
            <word>authalic</word>
            <word>bilevel</word>
            <word>bitmask</word>
            <word>boolean</word>
            <word>Bézier</word>
            <word>centimetre</word>
            <word>circlelike</word>
            <word>classname</word>
            <word>classnames</word>
            <word>classpath</word>
            <word>colinear</word>
            <word>collinearity</word>
            <word>complexify</word>
            <word>covariant</word>
            <word>deserialization</word>
            <word>deserialized</word>
            <word>endianness</word>
            <word>geoidal</word>
            <word>georeferenced</word>
            <word>georeferencing</word>
            <word>geospatial</word>
            <word>grayscale</word>
            <word>hectopascals</word>
            <word>initially</word>
            <word>javadoc</word>
            <word>kilometre</word>
            <word>linearization</word>
            <word>linearizer</word>
            <word>linearizers</word>
            <word>loggings</word>
            <word>maintainance</word>
            <word>marshallable</word>
            <word>marshalled</word>
            <word>marshaller</word>
            <word>marshallers</word>
            <word>marshalling</word>
            <word>metadata</word>
            <word>metres</word>
            <word>millimetre</word>
            <word>monospaced</word>
            <word>namespace</word>
            <word>namespaces</word>
            <word>orthodromic</word>
            <word>parsable</word>
            <word>polyline</word>
            <word>polylines</word>
            <word>preprocessing</word>
            <word>programmatically</word>
            <word>recursivity</word>
            <word>scanline</word>
            <word>splited</word>
            <word>spliterator</word>
            <word>splitted</word>
            <word>subsampled</word>
            <word>subsampling</word>
            <word>timezone</word>
            <word>transitioning</word>
            <word>unary</word>
            <word>Unicode</word>
            <word>uninstall</word>
            <word>unmarshal</word>
            <word>unmarshaller</word>
            <word>unmarshallers</word>
            <word>unmarshalling</word>
            <word>unparsable</word>
            <word>whitespaces</word>
        </spellchecker-wordlist>
    </configuration>
</project>
