<?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.
  -->

<module type="JAVA_MODULE" version="4">
    <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
        <output url="file://$MODULE_DIR$/.idea/out/main" />
        <output-test url="file://$MODULE_DIR$/.idea/out/test" />
        <exclude-output />
        <content url="file://$MODULE_DIR$">
            <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
            <sourceFolder url="file://$MODULE_DIR$/src/gen-java" isTestSource="false" />
            <sourceFolder url="file://$MODULE_DIR$/src/resources" type="java-resource" />
            <sourceFolder url="file://$MODULE_DIR$/interface/thrift/gen-java" isTestSource="false" />
            <sourceFolder url="file://$MODULE_DIR$/tools/stress/src" isTestSource="false" />
            <sourceFolder url="file://$MODULE_DIR$/tools/stress/test/unit" isTestSource="true" />
            <sourceFolder url="file://$MODULE_DIR$/test/unit" isTestSource="true" />
            <sourceFolder url="file://$MODULE_DIR$/test/long" isTestSource="true" />
            <sourceFolder url="file://$MODULE_DIR$/test/microbench" isTestSource="true" />
            <sourceFolder url="file://$MODULE_DIR$/test/burn" isTestSource="true" />
            <sourceFolder url="file://$MODULE_DIR$/test/distributed" isTestSource="true" />
            <sourceFolder url="file://$MODULE_DIR$/test/resources" type="java-test-resource" />
            <sourceFolder url="file://$MODULE_DIR$/test/conf" type="java-test-resource" />
            <excludeFolder url="file://$MODULE_DIR$/.idea" />
            <excludeFolder url="file://$MODULE_DIR$/.settings" />
            <excludeFolder url="file://$MODULE_DIR$/build" />
            <excludeFolder url="file://$MODULE_DIR$/data"/>
            <excludeFolder url="file://$MODULE_DIR$/logs"/>
        </content>
        <orderEntry type="inheritedJdk" />
        <orderEntry type="sourceFolder" forTests="false" />
        <orderEntry type="module-library">
            <library>
                <CLASSES>
                    <root url="file://$MODULE_DIR$/lib" />
                </CLASSES>
                <JAVADOC />
                <SOURCES />
                <jarDirectory url="file://$MODULE_DIR$/lib" recursive="false" />
            </library>
        </orderEntry>
        <orderEntry type="module-library">
            <library>
                <CLASSES>
                    <root url="file://$MODULE_DIR$/build/lib/jars" />
                </CLASSES>
                <JAVADOC />
                <SOURCES>
                    <root url="file://$MODULE_DIR$/build/lib/sources" />
                </SOURCES>
                <jarDirectory url="file://$MODULE_DIR$/build/lib/jars" recursive="false" />
                <jarDirectory url="file://$MODULE_DIR$/build/lib/sources" recursive="false" type="SOURCES" />
            </library>
        </orderEntry>
    </component>
</module>
