// /** @file
// Driver Health Manager DXE driver.
//
// This module produces two driver health manager forms.
// One will be used by BDS core to configure the Configured Required
// driver health instances, the other will be automatically included by
// firmware setup (UI).
//
// Copyright (c) 2015 - 2018, 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_PROPERTIES_MODULE_NAME
#language en-US
"Driver Health Manager DXE driver"


