<?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.
  -->
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd">
  <suppress>
    <notes><![CDATA[Suppress all CVE entries that have a score below CVSS 7.]]></notes>
    <cvssBelow>7</cvssBelow>
  </suppress>
  <suppress>
    <notes><![CDATA[Suppress some false positives identified on
      avatica-server-1.13, which the CVE database thinks looks similar to
      Apache HTTPD version 1.13.]]></notes>
    <cve>CVE-1999-1412</cve>
    <cve>CVE-2003-0789</cve>
    <cve>CVE-1999-1237</cve>
    <cve>CVE-1999-0236</cve>
  </suppress>
</suppressions>
