# Notices for Eclipse MDM|BL

This content is produced and maintained by the Eclipse MDM|BL project,
it is a project of the openMDM(R) Eclipse Working Group.

* Project home: https://projects.eclipse.org/projects/technology.mdmbl

## Trademarks

Eclipse MDM|BL, MDM|BL and Eclipse openMDM(R) logo are registered trademarks
of the Eclipse Foundation.

## Copyright

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

Copyright (c) 2016-2019 Gigatronik Ingolstadt GmbH
Copyright (c) 2016-2020 Peak Solution GmbH
Copyright (c) 2017-2018 science + computing AG Tuebingen (ATOS SE)
Copyright (c) 2017-2018 Canoo Engineering AG
Copyright (c) 2017 Florian Schmitt
Copyright (c) 2017-2020 Angelika Wittek
Copyright (c) 2018-2019 Elektronische Fahrwerksysteme GMBH
Copyright (c) 2018-2020 Karakun AG
Copyright (c) 2018-2020 Alexander Nehmer

## 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
http://www.eclipse.org/legal/epl-2.0.

SPDX-License-Identifier: EPL-2.0

## Source Code

The project maintains the following source code repositories:

org.eclipse.mdm.api.base.git	    - The openMDM(R) API.
org.eclipse.mdm.api.default.git	    - Extension of the openMDM(R) API containing default elements.
org.eclipse.mdm.api.odsadapter.git	- ODS implementation of persistence adapter.
org.eclipse.mdm.nucleus.git	        - Core building blocks for the openMDM Business Logic and Web Frontend.

## Third-party Content

The Content includes items that have been sourced from third parties as set out below.
If you did not receive this Content directly from the Eclipse Foundation, the following
is provided for informational purposes only, and you should look to
the Redistributor's license for terms and conditions of use.

antlr4-4.5.3.jar(2.5.3)
    * License: New BSD license

aopalliance-repackaged-2.5.0-b05.jar (2.5.0-b05)
    * License: CDDL

commons-codec-1.2.jar (1.2)
    * License: Apache License, 2.0

commons-httpclient-3.1.jar  (3.1)
    * License: Apache License, 2.0

commons-lang3-3.8.1.jar (3.8.1)
    * License: Apache License, 2.0

commons-text-1.6.jar (1.6)
    * License: Apache License, 2.0

gson-2.7.jar (2.7)
    * License: Apache License, 2.0

Google Guava Version: 25.0-jre  (25.0)
    * License: Apache License, 2.0

Gradle Wrapper (4.10.2)
    * License: Apache License, 2.0

hk2-api-2.5.0-b05.jar (2.5.0-b05)
    * License: CDDL-1.1

hk2-locator-2.5.0-b05.jar(2.5.0-b05)
    * License: CDDL

hk2-utils-2.5.0-b05.jar (2.5.0-b05)
    * License: CDDL

jackson-annotations-2.9.0.jar  (2.9.0)
    * License: Apache License, 2.0

jackson-core-2.9.2.jar(2.9.2)
    * License: Apache License, 2.0

jackson-databind-2.9.2.jar  (2.9.2)
    * License: Apache License, 2.0

jackson-jaxrs-base-2.9.2.jar(2.9.2)
    * License: Apache License, 2.0

jackson-jaxrs-json-provider-2.9.2.jar(2.9.2)
    * License: Apache License, 2.0

jackson-module-jaxb-annotations-2.9.2.jar  (2.9.2)
    * License: Apache License, 2.0

javassist-3.20.0-GA.jar  (2.20.0-GA)
    * License: Apache 2.0

jcl-over-slf4j-1.7.25.jar(1.7.25)
    * License: MIT License
    * Licence Path: https://www.slf4j.org/license.html
    * Project URL:  https://www.slf4j.org
    * Source URL:   https://github.com/qos-ch/slf4j

jersey-client-2.23.2.jar (2.23.2)
     * License: CDDL

jersey-common-2.23.2.jar (2.23.2)
    * License: CDDL

jersey-container-servlet-2.23.2.jar  (2.23.2)
    * License: CDDL

jersey-container-servlet-core-2.23.3.jar(2.23.2)
    * License: CDDL

jersey-guava-2.23.2.jar  (2.23.2)
    * License: Apache License, 2.0

jersey-media-jaxb-2.23.2.jar(2.23.2)
    * License: CDDL

jersey-media-sse-2.23.2.jar (2.23.2)
    * License: CDDL

jersey-media-multipart-2.23.2.jar (2.23.2)
    * License: CDDL

jersey-server-2.23.2.jar (2.23.2)
    * License: Apache-2.0

log4j-over-slf4j-1.7.25.jar (1.7.25)
    * License: Apache-2.0

logback-classic-1.2.3.jar(1.2.3)
    * License: Eclipse Public License 1.0

logback-core-1.2.3.jar(1.2.3)
    * License: Eclipse Public License 1.0

mimepull-1.9.6.jar (1.9.4)
    * License: CDDL

openatfx-0.7.4.jar (0.7.4)
    * License: Apache-2.0

osgi-resource-locator-1.0.1.jar(1.0.1)
    * License: CDDL

protobuf-java-3.2.0.jar (3.2.0)
    * License: New BSD license

protobuf-java-util-3.2.0.jar  (3.2.0)
    * License: New BSD license

swagger-annotations-2.0.8.jar (2.0.8)
    * License: Apache-2.0

swagger-ui-3.23.0.jar (3.23.0)
    * License: Apache-2.0

slf4j-api-1.7.25.jar  (1.7.25)
    * License: MIT license
    * Licence Path: https://www.slf4j.org/license.html
    * Project URL: https://github.com/qos-ch/slf4j
    * Source URL:  https://github.com/qos-ch/slf4j/releases/tag/v_1.7.25

stax2-api-3.1.4.jar (3.1.4)
    * License: BSD-2-Clause

validation-api-1.1.0.Final.jar (1.1.0.Final)
  * License: Apache License, 2.0

vavr-0.9.1-sources.jar (0.9.1)
  * License: Apache License, 2.0

vavr-match-0.9.1.jar (0.9.1)
  * License: Apache License, 2.0

woodstox-core-asl-4.4.1.jar (4.4.1)
  * License: Apache License, 2.0


FFAMFAMFAM Silk Icon, Version 1.3
    * License: Creative Commons Attribution 3.0 License
    * Licence Path: https://creativecommons.org/licenses/by/3.0/
    * Project: http://www.famfamfam.com/lab/icons/silk/
    * Source:  http://www.famfamfam.com/lab/icons/silk/

@angular/animations:7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io/api/animations
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/cdk:7.1.1
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io/api
    * Source:  https://github.com/angular/angular/releases/tag/7.1.1


@angular/common@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io/api/common
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4r

@angular/compiler@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/core@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/forms@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/http@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/platform-browser-dynamic@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/platform-browser@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

@angular/router@7.2.4
    * License: MIT
    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
    * Project: https://angular.io
    * Source:  https://github.com/angular/angular/releases/tag/7.2.4

bootstrap@4.1.3
    * License: MIT
    * Licence Path: https://github.com/twbs/bootstrap/raw/master/LICENSE
    * Project: https://getbootstrap.com/
    * Source:  https://github.com/twbs/bootstrap

class-transformer@0.1.6
    * License: MIT
    * Licence Path: https://github.com/typestack/class-transformer/blob/master/LICENSE
    * Project: https://github.com/pleerock/class-transformer
    * Source:  https://github.com/pleerock/class-transformer

core-js@2.6.0
    * License: MIT
    * Licence Path: https://github.com/zloirock/core-js/raw/master/LICENSE
    * Project: https://github.com/zloirock/core-js
    * Source:  https://github.com/zloirock/core-js/releases/tag/v2.6.0

file-saver@1.3.3
    * License: MIT
    * Licence Path: https://github.com/eligrey/FileSaver.js/raw/master/LICENSE.md
    * Project: https://github.com/eligrey/FileSaver.js
    * Source:  https://github.com/eligrey/FileSaver.js

font-awesome@4.7.0
    * License: MIT
    * Licence Path: https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt
    * Project: https://fontawesome.com/
    * Source:  https://github.com/FortAwesome/Font-Awesome

ng2-split-pane@1.3.1
    * License: MIT
    * Licence Path: https://github.com/wannabegeek/ng2-split-pane/raw/master/LICENSE
    * Project: https://github.com/wannabegeek/ng2-split-pane
    * Source:  https://github.com/wannabegeek/ng2-split-pane

ngx-bootstrap@3.1.2
    * License: MIT
    * Licence Path: https://github.com/valor-software/ngx-bootstrap/blob/v3.1.2/LICENSE
    * Project: https://valor-software.com/ngx-bootstrap
    * Source:  https://github.com/valor-software/ngx-bootstrap/tree/v3.1.2

@ngx-translate/core@11.0.1
    * License: MIT 
    * Licence Path:   https://github.com/ngx-translate/core/blob/v11.0.1/LICENSE  
    * Project URL:    http://www.ngx-translate.com/
    * Source URL:     https://github.com/ngx-translate/core

@ngx-translate/http-loader@4.0.0
    * License: MIT 
    * Licence Path:   https://github.com/ngx-translate/http-loader/blob/v4.0.0/LICENSE  
    * Project URL:    http://www.ngx-translate.com/
    * Source URL:     https://github.com/ngx-translate/http-loader/tree/v4.0.0

primeicons:1.0.0
    * License: MIT
    * Licence Path: https://github.com/primefaces/primeicons/blob/1.0.0/LICENSE
    * Project: https://www.primefaces.org/primeng
    * Source:  https://github.com/primefaces/primeicons/tree/1.0.0

primeng@7.0.1
    * License: MIT
    * Licence Path: https://github.com/primefaces/primeng/blob/7.0.1/LICENSE.md
    * Project: https://www.primefaces.org/primeng
    * Source:  https://github.com/primefaces/primeng/tree/7.0.1

rxjs@6.3.3
    * License: Apache-2.0
    * Project: https://rxjs-dev.firebaseapp.com/
    * Source:  https://github.com/ReactiveX/rxjs/tree/6.3.3

rxjs-compat:6.3.3
    * License: Apache-2.0
    * Project: https://rxjs-dev.firebaseapp.com/
    * Source:  https://github.com/ReactiveX/rxjs/tree/6.3.3/compat

tslib@1.9.0
    * License: Apache-2.0
    * Project: https://github.com/Microsoft/tslib
    * Source:  https://github.com/Microsoft/tslib/tree/1.9.0

zone.js@0.8.26
    * License: MIT
    * Licence Path: https://github.com/angular/zone.js/raw/master/LICENSE
    * Project: https://github.com/angular
    * Source:  https://github.com/angular/zone.js/releases/tag/v0.8.26

OMG Event Service Specification (1.2)

* License: LicenseRef - Object-Management-Group-License
* Project: https://www.omg.org/spec/EVNT/1.2/
* Source: https://www.omg.org/spec/EVNT/1.2/pdf

OMG Notification Service Specification (1.1)

* License: LicenseRef - Object-Management-Group-License
* Project: https://www.omg.org/spec/NOT/
* Source: https://www.omg.org/spec/NOT/1.1/PDF

ods530.idl
Date: Hoehenkirchen, 06/01/2016
"The ASAM Board of Directors releases the IDL files for use under the EPL to the Eclipse IWG openMDM.
This is valid for all versions of ASAM ODS 5.3.x.
This permission is valid under the conditions of Eclipse will not modify the file."

AvalonEvent.idl, CorbaFileServer.idl
Date: 08/15/2016
"Herewith, we release the generated Client-Source-Code generated from our CORBA IDLs, namely
* CORBANotification Service (generated from „AvalonEvent.idl”)
* CORBAFileServer (generated from „CorbaFileServer.idl“),
Under the Eclipse Public License (EPL). This agreement does not include the „AvalonEvent.idl“ and
„CorbaFileServer.idl“ itself, which remain protected property of HighQSoft. "

## Cryptography

Content may contain encryption software. The country in which you are currently
may have restrictions on the import, possession, and use, and/or re-export to
another country, of encryption software. BEFORE using any encryption software,
please check the country's laws, regulations and policies concerning the import,
possession, or use, and re-export of encryption software, to see if this is
permitted.
