# Notices for Eclipse Memory Analyzer

This content is produced and maintained by the Eclipse Memory Analyzer project.

* Project Web Site: https://www.eclipse.org/mat
* Project Information: https://projects.eclipse.org/projects/tools.mat

## Trademarks

Eclipse Memory Analyzer, and Memory Analyzer are trademarks of the Eclipse
Foundation.

## Copyright

All content is the property of the respective authors or their employers. For
more information regarding authorship of content, please consult the listed
source code repository logs.

## Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Eclipse Public License v. 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

## Source Code

The project maintains the following source code repositories:

* https://git.eclipse.org/r/mat/org.eclipse.mat


## Third-party Content

This project leverages the following third party content.

DEFLATE-library-Java (n/a)

* License: MIT

Icon Set: Fam Fam Silk Icon Set Version (1.3)

* License: Creative Commons Attribution License 2.5
