// /** @file
// Intel Framework Package Reference Implementations
//
// This package provides definitions and libraries that comply to Intel Framework Specifications.
//
// Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
//
// This program and the accompanying materials are licensed and made available
// under the terms and conditions of the BSD License which accompanies this distribution.
// The full text of the license may be found at http://opensource.org/licenses/bsd-license.php
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES
// OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// **/


#string STR_PACKAGE_ABSTRACT            #language en-US "Intel Framework Package Reference Implementations"

#string STR_PACKAGE_DESCRIPTION         #language en-US "This package provides definitions and libraries that comply to Intel Framework specifications."



