]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Conf/XMLSchema/DistributionPackage.xsd
BaseTools: Fix various typos
[mirror_edk2.git] / BaseTools / Conf / XMLSchema / DistributionPackage.xsd
index 8f136ae04e3c8d72b0a8b0ec68197624b0804d41..67be9c8f3294ec2a334cdba51ffb2d3e8e022c92 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Filename: DistributionPackage.xsd
-
-Copyright (c) 2008 - 2011, Intel Corporation. All rights reserved.
-
-This program and the accompanying materials are licensed and made available 
-under the terms and conditions of the BSD License which 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.
-
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
-    targetNamespace="http://www.uefi.org/2011/1.1" xmlns="http://www.uefi.org/2011/1.1">
-    <xs:element name="DistributionPackage">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package
-                description (PKG) file. It describes the content of:</xs:documentation>
-            <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and
-                headers.</xs:documentation>
-            <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary format. (Note
-                that Binary format is for FFS leaf section file types only, complete FFS files
-                cannot be distributed using this distribution format.) </xs:documentation>
-            <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify
-                the binary images to create UEFI/PI compliant images. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other
-                miscellaneous content that is not specific to UEFI/PI images. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of
-                packages, while the Module Surface Area provides information relevant to source
-                and/or binary distributions. </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This header contains (legal) information
-                            usually required for distributing both binary and/or source code.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The list of packages in this
-                            distribution. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Packages are groups of files and/or
-                            modules that are similar in nature.</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a
-                            package GUID and a package version. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> A package can declare public mappings of
-                            C names to GUID values. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> A package can provide header files for
-                            library classes and/or other industry standard definitions. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> A package can also declare public
-                            mappings of platform configuration database (PCD) &quot;knobs&quot; to
-                            control features and operation of modules within a platform. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Finally, a package lists the library
-                            instances and/or modules that are provided in a distribution package.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant modules
-                            in this distribution that are NOT part of a Package. Every module that
-                            is provided as part of a package needs to be described in a
-                            PackageSurfaceArea.Modules section. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section describes
-                            how each module in a distribution is coded, or, in the case of a binary
-                            module distribution, how it was built. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules
-                            are uniquely identified by the Module's GUID and version number. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> This section will typically be used for
-                            modules that don't require any additional files that would be included
-                            in a package. For example, the Enhanced FAT driver binary does not need
-                            to have a package description, as no additional files are provided.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is for distributing vendor
-                            specific executable tools, tool source code and/or configuration files.
-                            These tools are primarily for manipulating code and/or binary images. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Tools in this section
-                            can:</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create
-                            source code files and build scripts. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to
-                            UEFI/PI specifications. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain
-                            types of text/unicode files. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware
-                            Device images. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 5) Implement external
-                            encoding/decoding/signature/GUIDed tools. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 6) Distribution Package
-                            create/install/remove tools. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The list of miscellaneous files in this
-                            distribution. Any files that are not listed in either the Package,
-                            Module or Tools sections can be listed here. This section can be used to
-                            distribute specifications for packages and modules that are not
-                            &quot;industry standards&quot; such as a specification for a chipset or
-                            a video device. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The UserExtensions section is used to
-                            disseminate processing instructions that may be custom to the content
-                            provided by the distribution. This section contains information that is
-                            common to all aspects of this disribution. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-            </xs:sequence>
-
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the DistributionPackage Description  -->
-
-    <xs:element name="DistributionHeader">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> This section defines the content of the UEIF/PI
-                compliant Distribution Package Header. This is the only required element of a
-                UEFI/PI compliant distribution package. </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="1" maxOccurs="1" name="Name">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the User Interface Name for this
-                            Distribution Package. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely
-                            identified by it's GUID and Version number. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:normalizedString">
-                                <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> The reference name of
-                                            the Distribution Package file. This single word name can
-                                            be used by tools as a keyword or for directory and/or
-                                            file creation. </xs:documentation>
-                                        <xs:documentation xml:lang="en-us"> White space and special
-                                            characters (dash and underscore characters may be used)
-                                            are not permitted in this name. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version
-                            attribute uniquely identify this Distribution Package. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Backward compatible releases of a
-                            distribution package need only change the version number, while
-                            non-backward compatible changes require the GUID to change (resetting
-                            the version number to 1.0 is optional.) </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="RegistryFormatGuid">
-                                <xs:attribute name="Version" type="xs:decimal" use="required">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> This value, along with
-                                            the GUID, is used to uniquely identify this object. The
-                                            higher the number, the more recent the content.
-                                        </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A string identifying who created this
-                            distribution package. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The date and time this distribution was
-                            created. The format is: YYYY-MM-DDThh:mm:ss, for example:
-                            2001-01-31T13:30:00 (note the T character separator between the calendar
-                            date and the time. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="Copyright" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The copyright for this file that is
-                            generated by the creator of the distribution. If a derivative work is
-                            generated from an existing distribution, then the existing copyright
-                            must be maintained, and additional copyrights may be appended to the end
-                            of this element. It may also be the primary copyright for all code
-                            provided in the Distribution Package. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="License" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A license that describes any
-                            restrictions on the use of this distribution. If a derivative work is
-                            allowed by the original license and a derivative work is generated from
-                            an existing distribution, then the existing license must be maintained,
-                            and additional licenses may be appended to the end of this element. It
-                            may also be the primary license for all code provided in the
-                            distribution file. Alternatively, this may point to a filename that
-                            contains the License. The file (included in the content zip file) will
-                            be stored in the same location as the distribution package's .pkg file.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="Abstract" type="xs:normalizedString">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A one line description of the
-                            Distribution Package. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A complete description of the
-                            Distribution Package. This description may include the release name of
-                            the file, the version of the file, and a complete description of the
-                            file contents and/or features including a description of the updates
-                            since the previous file release. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The packaging utilities will use this
-                            MD5 sum value of the included ZIP file containing files and/or code. If
-                            this element is not present, then installation tools should assume that
-                            the content is correct, or that other methods may be needed to verify
-                            content. </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal"
-                    default="1.1">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> #1 Updated to present date and new
-                            version which is important to reflect the present state of the
-                            matter</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of
-                            UNDEFIND type 2 is important since there is a large body of legacy code
-                            for which the GUID’s and other code/data objects were not decorated with
-                            their usage. This document will allow for importing today’s source
-                            artifacts and producing decorations using the ‘Undefined’ versus having
-                            an error</xs:documentation>
-                        <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future
-                            architecture types</xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-            </xs:sequence>
-            <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> If set to true, all content within this
-                        Distribution Package should NOT be modified. The default permits
-                        modification of all content. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> If set to true, then the content can be
-                        repackaged into another distribution package. The default prohibits
-                        repackaging the Distribution content. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the DistributionHeader element. -->
-
-    <xs:element name="PackageSurfaceArea">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> A package is a collection of related objects -
-                Includes, Libraries and Modules. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> Each package is uniquely identified by it's GUID and
-                Version number. Backward compatible releases of a package need only change the
-                version number, while non-backward compatible changes require the GUID to change
-                (resetting the version number to 1.0 is optional.) </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-
-                <xs:element minOccurs="1" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Name">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the User Interface
-                                        Name for this package. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="BaseName" type="xs:NMTOKEN"
-                                                use="required">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This is a
-                                                  single word BaseName of the package. This BaseName
-                                                  can be used by tools as a keyword and for
-                                                  directory/file creation. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version
-                                        attribute uniquely identify a given package.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal"
-                                                use="required">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. </xs:documentation>
-                                                  <xs:documentation xml:lang="en-us"> Backward
-                                                  compatible changes must make sure this number is
-                                                  incremented from the most recent version.
-                                                  Non-backward compatible changes require a new
-                                                  GUID, and the version can be reset.
-                                                  </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> If the package requires a
-                                        different copyright than the distribution package, this
-                                        element can list one or more copyright lines.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> If the package requires
-                                        licenses that are different from the distribution package
-                                        license, this element can contain one or more license text
-                                        paragraphs (or license filenames.) </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
-                                type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A one line description of
-                                        this package. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Description"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A complete description of a
-                                        package. This description may include the release name of
-                                        the package, the version of the package, and a complete
-                                        description of the package contents and/or features
-                                        including a description of the updates since the previous
-                                        package’s release. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="PackagePath"
-                                type="xs:anyURI">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This element is the location
-                                        (in the ZIP file) for the root directory of a package.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea Header element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> The term cloned is used here to indicate
-                            that this package as been copied and modified to a completely different
-                            package. An example might be for a new generation of chipsets that have
-                            few or no elements in common with the original. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version
-                                        attribute uniquely identify the Package that this Package
-                                        was copied from. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal"
-                                                use="required">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  the package that this package was cloned from.
-                                                  </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea ClonedFrom element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> Library Classes are public interfaces
-                            that can be used by modules. One or more library instances can implement
-                            a library class, however only one library instance can be linked to an
-                            individual module. This provides the platform integrator with the
-                            flexibility of choosing one library instance's implementation over a
-                            different library instance. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
-                                            type="xs:anyURI">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> The header file
-                                                  provides definitions and function prototypes for a
-                                                  library class. Modules can be coded against these
-                                                  functions, using the definitions in this header,
-                                                  without concerning themselves about the libraries'
-                                                  implementation details. This is a PackagePath
-                                                  relative path and filename for the include file.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="1"
-                                            name="RecommendedInstance">
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="GUID">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This GUID and
-                                                  the Version attribute uniquely identify the
-                                                  Recommended Library Instance. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="RegistryFormatGuid">
-                                                  <xs:attribute name="Version" type="xs:decimal"
-                                                  use="optional">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. If this value is not specified, then
-                                                  any version of the library instance is
-                                                  recommended. </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:attribute>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Keyword" type="xs:NCName" use="required">
-                                        <xs:annotation>
-                                            <xs:documentation xml:lang="en-us"> The single word name
-                                                of the Library Class that module developers will use
-                                                to identify a library class dependency.
-                                            </xs:documentation>
-                                        </xs:annotation>
-                                    </xs:attribute>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea LibraryClassDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to list header
-                            files for industry standards not under the auspices of UEFI.org. For
-                            example, headers that contain definitions and data structures for the
-                            USB specifications. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded"
-                                name="IndustryStandardHeader">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
-                                            type="xs:anyURI">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> The package
-                                                  relative path and filename (in the content zip
-                                                  file) of the industry standard include file.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea IndustryStdIncludes element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> All top level header files that are
-                            included by a package that are not listed above. They cannot
-                            be:</xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> 3) A library class header.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This is the
-                                                  Package relative path and filename location within
-                                                  the content ZIP file. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                  <xs:extension base="xs:anyURI">
-                                                  <xs:attributeGroup ref="SupportedArchMod"/>
-                                                  </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea PackageIncluces element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Modules">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This section lists the
-                                        Module Surface Area for all modules provided with this
-                                        package. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea Modules element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID
-                            C names to GUID values as a Registry Format GUID. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must
-                            specify their dependency on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Individual GUID Declarations
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
-                                            type="RegistryFormatGuid"/>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="UiName" type="xs:normalizedString"
-                                        use="optional"/>
-                                    <xs:attribute name="GuidTypes" type="GuidListType"
-                                        use="optional"/>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea GuidDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section defines the mapping of
-                            Protocol C names to GUID values as a Registry Format GUID. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these Protocols must
-                            specify their dependency on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Individual Protocol
-                                        Declarations </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
-                                            type="RegistryFormatGuid"/>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="UiName" type="xs:normalizedString"
-                                        use="optional"/>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea ProtocolDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi
-                            C names to GUID values as a Registry Format GUID. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify
-                            their dependency on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Individual PPI Declarations
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
-                                            type="RegistryFormatGuid"/>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="UiName" type="xs:normalizedString"
-                                        use="optional"/>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea PpiDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to declare platform
-                            configuration knobs that are defined by this package. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> Modules that use these PCD values must
-                            specify their dependency on this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1"
-                                            name="TokenSpaceGuidCname" type="xs:NCName">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Specifies the C
-                                                  name of the Token Space GUID of which this PCD
-                                                  Entry is a member. This C name should also be
-                                                  listed in the GUIDs section, (specified above,)
-                                                  where the C name is assigned to a GUID value.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="Token">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Specifies the
-                                                  32-bit token value for this PCD Entry. The Token
-                                                  number must be unique to the Token Space that
-                                                  declares the PCD. </xs:documentation>
-                                                <xs:documentation xml:lang="en-us"> The minLength of
-                                                  3 is required to handle the "0x" prefix to the hex
-                                                  number. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:simpleType>
-                                                <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  <xs:maxLength value="10"/>
-                                                </xs:restriction>
-                                            </xs:simpleType>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
-                                            type="PcdDatumTypes">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> A string that
-                                                  contains the data type of this PCD Entry. PCD data
-                                                  types are restricted to the following set:UINT8,
-                                                  UINT16, UINT32, UINT64, VOID*, BOOLEAN.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage"
-                                            type="PcdItemListType">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> A string that
-                                                  contains one or more PCD Item types separated by
-                                                  spaces. The PCD Item types are restricted to
-                                                  FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
-                                            type="xs:normalizedString"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This is a
-                                                  recommended maximum data size for VOID* data
-                                                  types, the actual value should be defined by the
-                                                  Platform Integrator. It is not required for the
-                                                  other data types. </xs:documentation>
-                                                <xs:documentation xml:lang="en-us"> The minLength of
-                                                  3 is required to handle the "0x" prefix to the hex
-                                                  number. </xs:documentation>
-
-                                            </xs:annotation>
-                                            <xs:simpleType>
-                                                <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                </xs:restriction>
-                                            </xs:simpleType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-
-                                        <xs:element minOccurs="0" maxOccurs="unbounded"
-                                            name="PcdError">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Valid Error
-                                                  messages that may be implemented in a module for
-                                                  the PCD Entry. Only One Error Number per PcdError,
-                                                  (multiple ErrorMessage entries are permitted) and
-                                                  multiple PcdError elements are permitted.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                  <xs:choice minOccurs="1" maxOccurs="1">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> One of the
-                                                  following types of comparisons, which must be able
-                                                  to evaluate to either true or false.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="ValidValueList">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The PCD Value
-                                                  must be space separated list of values. Values are
-                                                  restricted to the data type of this PCD.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="xs:normalizedString">
-                                                  <xs:attribute name="Lang" type="xs:language"
-                                                  use="optional"/>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="ValidValueRange" type="xs:normalizedString">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The PCD must
-                                                  be within a specifed range of numeric values.
-                                                  Restricted to C style Relational, Equality and
-                                                  Logicial Operators and parenthesis are valid. Only
-                                                  the CName for this PCD is permitted in the
-                                                  ValidValueRange expression. All other values must
-                                                  be numeric.</xs:documentation>
-                                                  <xs:documentation xml:lang="en-us"> LValue (op
-                                                  RValue)+ </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="Expression" type="xs:normalizedString">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> A in-fix
-                                                  logical expression using C style logical
-                                                  operators. </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:element>
-                                                  </xs:choice>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="ErrorNumber">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> A hexadecimal
-                                                  value for the error message as defined by
-                                                  specifications. </xs:documentation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="1" maxOccurs="unbounded"
-                                                  name="ErrorMessage">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This string
-                                                  should be defined by specifications. There are
-                                                  pre-defined error number ranges in the UEFI/PI
-                                                  specificaiton. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="xs:string">
-                                                  <xs:attribute name="Lang" type="xs:language"
-                                                  default="en-us" use="optional"/>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                    </xs:sequence>
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea PcdDeclarations element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to describe any PCD
-                            interdependencies or relationships. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck"
-                                type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This entry must used
-                                        TokenSpaceGuidCName.PcdCname for every named PCD. Restricted
-                                        to Relational, Equality and Logical Operators (NOT, AND, OR,
-                                        GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only
-                                        the TokenSpaceGuidCName.PcdCname us permitted to name PCDs
-                                        in the expression. All other values must be numeric. </xs:documentation>
-                                    <xs:documentation xml:lang="en-us"> LValue (op RValue)+
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section contains files that are not
-                            part of the code distributed with this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Only required if different
-                                        from the Package Copyright. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Only required if different
-                                        from the Package License. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A one line description of
-                                        this section's content. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A complete description of
-                                        the files in this section. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the PackagePath
-                                        relative path and filename location within the ZIP file.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:anyURI">
-                                            <xs:attribute name="Executable" type="xs:boolean"
-                                                default="false" use="optional">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> If true, used
-                                                  by installation tools to ensure that a file that
-                                                  must be executable has the correct properties to
-                                                  permit execution. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea Misc element.  -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used for any processing
-                            instructions that may be custom to the content provided by this package
-                            that are common to this package. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType mixed="true">
-                        <xs:sequence>
-                            <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="UserId" type="xs:NCName" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This is a single word identifier
-                                    for grouping similar content that does not fit into previously
-                                    defined sections or other sections of the Distribution.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="Identifier" type="xs:string" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This can be used to
-                                    differentiate multiple sections with a grouping. </xs:documentation>
-                                <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
-                                    Identifier might indicate specific steps and tools required
-                                    before processing module content, while a different
-                                    UserExtensions section with a POST_PROCESS Identifier might
-                                    describe steps that need to be executed after operations on the
-                                    modules in this package. </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:anyAttribute processContents="lax"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageSurfaceArea UserExtensions element. -->
-
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the PackageSurfaceArea element. -->
-
-    <xs:element name="ModuleSurfaceArea">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> Each module is uniquely identified by it's GUID and
-                Version number. Backward compatible releases of a module need only change the
-                version number, while non-backward compatible changes require the GUID to change
-                (resetting the version number to 1.0 is optional.) </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-
-                <xs:element minOccurs="1" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Name">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the User Interface
-                                        Name for this Module. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:normalizedString">
-                                            <xs:attribute name="BaseName" type="xs:NMTOKEN"
-                                                use="required">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This is a
-                                                  single word BaseName that will be used to create a
-                                                  module meta-data file. </xs:documentation>
-                                                  <xs:documentation xml:lang="en-us"> This name
-                                                  should also be used to create output file names
-                                                  and directories. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version
-                                        attribute uniquely identify a given Module.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal"
-                                                use="required">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. </xs:documentation>
-                                                  <xs:documentation xml:lang="en-us"> Backward
-                                                  compatible changes must make sure this number is
-                                                  incremented from the most recent version.
-                                                  Non-backward compatible changes require a new
-                                                  GUID, and the version can be reset.
-                                                  </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        Copyright is different from either the Package or
-                                        Distribution copyright. Multiple copyright lines are
-                                        permitted within this section. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        license is different from either the Package or Distribution
-                                        license. Multiple licenses are permitted within this
-                                        section. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
-                                type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A brief text description of
-                                        the module. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Description"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> A complete description of
-                                        the module contents and/or features including a description
-                                        of the updates since the previous module release.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Module Surface Area Header Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> List general information about a module,
-                            including the Supported Architectures, this module's type,
-                            specifications the module is coded against, and other informational
-                            content. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="ModuleType"
-                                type="ModuleTypes">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> One of the Enumerated module
-                                        types that limit the use of a module. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> For stand-alone modules that
-                                        are NOT part of any package, this is the path to the root of
-                                        the module as listed in the ZIP file. For modules included
-                                        in a package, this is the location, relative to the root of
-                                        the package (PackagePath) this module belongs to.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This element is only
-                                        required for the PEIM that produces the PCD PPI or the DXE
-                                        Driver that produces the PCD Protocol. </xs:documentation>
-                                </xs:annotation>
-                                <xs:simpleType>
-                                    <xs:restriction base="xs:NCName">
-                                        <xs:enumeration value="PEI_PCD_DRIVER"/>
-                                        <xs:enumeration value="DXE_PCD_DRIVER"/>
-                                    </xs:restriction>
-                                </xs:simpleType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion"
-                                type="xs:decimal"/>
-
-                            <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion"
-                                type="xs:decimal"/>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is a list of other
-                                        specifications that this module is written against. These
-                                        entries can be used in #define statements (depending on the
-                                        build system implementation, they may be autogenerated.)
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:NCName">
-                                            <xs:attribute name="Version" type="xs:decimal"
-                                                use="required"/>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> Different firmware execution
-                                        paths may be taken based on a given state of the hardware,
-                                        firmware, or through feature settings. A BootMode may be
-                                        declared (PRODUCES) or discovered (CONSUMES) based on these
-                                        states and feature settings. If the usage is UNDEFINE, it
-                                        implies that a Boot Mode is used, but the package creator
-                                        does not know how it is used. The supported boot modes map
-                                        to the PI specification Boot Modes. The boot modes listed
-                                        with Recovery are to indicate that the BootMode is valid
-                                        during a recovery boot. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence minOccurs="0">
-                                        <xs:element minOccurs="1" maxOccurs="1"
-                                            name="SupportedBootModes">
-                                            <xs:simpleType>
-                                                <xs:list>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="xs:NCName">
-                                                  <xs:enumeration value="FULL"/>
-                                                  <xs:enumeration value="MINIMAL"/>
-                                                  <xs:enumeration value="NO_CHANGE"/>
-                                                  <xs:enumeration value="DIAGNOSTICS"/>
-                                                  <xs:enumeration value="DEFAULT"/>
-                                                  <xs:enumeration value="S2_RESUME"/>
-                                                  <xs:enumeration value="S3_RESUME"/>
-                                                  <xs:enumeration value="S4_RESUME"/>
-                                                  <xs:enumeration value="S5_RESUME"/>
-                                                  <xs:enumeration value="FLASH_UPDATE"/>
-                                                  <xs:enumeration value="RECOVERY_FULL"/>
-                                                  <xs:enumeration value="RECOVERY_MINIMAL"/>
-                                                  <xs:enumeration value="RECOVERY_NO_CHANGE"/>
-                                                  <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
-                                                  <xs:enumeration value="RECOVERY_DEFAULT"/>
-                                                  <xs:enumeration value="RECOVERY_S2_RESUME"/>
-                                                  <xs:enumeration value="RECOVERY_S3_RESUME"/>
-                                                  <xs:enumeration value="RECOVERY_S4_RESUME"/>
-                                                  <xs:enumeration value="RECOVERY_S5_RESUME"/>
-                                                  <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
-                                                  <xs:enumeration value="UNDEFINED"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                </xs:list>
-                                            </xs:simpleType>
-                                        </xs:element>
-
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  always supports the given boot modes.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module may
-                                                  support a given mode on some execution paths.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  will change the boot mode. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIME_PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  will change the boot mode on some exection paths.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The package
-                                                  creator does not know how the boot mode is used.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Event"
-                                nillable="true">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> The functions that make up
-                                        the Event, Timer, and Task Priority Services are used during
-                                        preboot to create, close, signal, and wait for events; to
-                                        set timers; and to raise and restore task priority levels as
-                                        defined in the UEFI specification. GUIDed events should be
-                                        listed in the Guids section. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  will register a notification function and calls
-                                                  the function when it is signaled.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  will register a notification function and calls
-                                                  the function when it is signaled on some execution
-                                                  paths. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  will signal all events in an event group.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  will signal all events in an event group under
-                                                  some execution paths. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The package
-                                                  creator does not know how an event is used.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="EventType" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
-                                                <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-
-
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB"
-                                nillable="false">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed
-                                        Hand Off Blocks (HOBs) produced or consumed by this module.
-                                    </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="HobType" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PHIT"/>
-                                                <xs:enumeration value="MEMORY_ALLOCATION"/>
-                                                <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
-                                                <xs:enumeration value="FIRMWARE_VOLUME"/>
-                                                <xs:enumeration value="LOAD_PEIM"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> A HOB must be
-                                                  present in the system. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> If present,
-                                                  the HOB will be used. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The HOB is
-                                                  always produced by the module. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The HOB may be
-                                                  produced by the module under some execution paths.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The package
-                                                  creator knows that a HOB is used, but does not
-                                                  know how it is used. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-
-                        </xs:sequence>
-                        <xs:attributeGroup ref="SupportedArchMod"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of ModuleProperties Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section may be included for Modules
-                            that are copied from a different module. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This GUID and the Version
-                                        attribute uniquely identify the Module that this Module was
-                                        copied from. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="RegistryFormatGuid">
-                                            <xs:attribute name="Version" type="xs:decimal"
-                                                use="required">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!--  End of ClonedFrom Section. -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A list of the different Library Classes
-                            consumed by a driver, core and/or application module, or produced by a
-                            Library module. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="Keyword"
-                                            type="xs:NCName">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us "> Used by tools
-                                                  to identify different instances of libraries that
-                                                  provide the library class. This keyword identifies
-                                                  the library class this module needs to be linked
-                                                  against. </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="1"
-                                            name="RecommendedInstance">
-                                            <xs:complexType>
-                                                <xs:all>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="GUID">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This GUID and
-                                                  the Version attribute uniquely identify the
-                                                  recommended Library Instance for this module .
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="RegistryFormatGuid">
-                                                  <xs:attribute name="Version" type="xs:decimal"
-                                                  use="optional">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:attribute>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                </xs:all>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Library
-                                                  instances can provide code for a library class, or
-                                                  may require other library instances themselves.
-                                                  Since different execution paths in a library (or
-                                                  module) may need different library classes based
-                                                  on some setting, library classes may not alway be
-                                                  required. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-
-                                    <xs:attributeGroup ref="SupportedArchMod"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional">
-                                        <xs:annotation>
-                                            <xs:documentation xml:lang="en-us"> A FeatureFlag
-                                                attribute must evaluate to either true or false - it
-                                                may be a fixed value of true or false, a C name or
-                                                an in-fix expression. </xs:documentation>
-                                        </xs:annotation>
-                                    </xs:attribute>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of LibraryClassDefinitions Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the module relative
-                                        (ModuleProperties.Path) path and filename location within
-                                        the ZIP file. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:anyURI">
-                                            <xs:attribute name="Family" type="FamilyTypes"
-                                                use="optional">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The Family
-                                                  attribute is used to restrict usage to a given
-                                                  family of compilers, such as GCC or MSFT. Since
-                                                  not all code processing tools use the same syntax,
-                                                  especially for assembly, this field can be used to
-                                                  identify different syntax. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                            <xs:attribute name="SupArchList" type="ArchListType"
-                                                use="optional"/>
-                                            <xs:attribute name="SupModList" type="ModuleListType"
-                                                use="optional"/>
-                                            <xs:attribute name="FeatureFlag"
-                                                type="xs:normalizedString" use="optional"/>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of SourceFiles Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="unbounded"
-                                            name="Filename">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This is the
-                                                  module relative (ModuleProperties.Path) path and
-                                                  filename location within the ZIP file.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                  <xs:extension base="xs:anyURI">
-                                                  <xs:attribute name="FileType" use="optional">
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="xs:NCName">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> Binary file
-                                                  distribution is limited to UEFI/PI FFS leaf
-                                                  section file types. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:enumeration value="GUID"/>
-                                                  <xs:enumeration value="FREEFORM"/>
-                                                  <xs:enumeration value="UEFI_IMAGE"/>
-                                                  <xs:enumeration value="PE32">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> A UEFI/PI FFS
-                                                  Leaf section file type, not a raw PE32 file.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:enumeration>
-                                                  <xs:enumeration value="PIC"/>
-                                                  <xs:enumeration value="PEI_DEPEX"/>
-                                                  <xs:enumeration value="DXE_DEPEX"/>
-                                                  <xs:enumeration value="SMM_DEPEX"/>
-                                                  <xs:enumeration value="COMPAT16"/>
-                                                  <xs:enumeration value="DISPOSABLE"/>
-                                                  <xs:enumeration value="TE"/>
-                                                  <xs:enumeration value="VER"/>
-                                                  <xs:enumeration value="UI"/>
-                                                  <xs:enumeration value="BIN"/>
-                                                  <xs:enumeration value="FV"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:attribute>
-                                                  <xs:attribute name="SupArchList"
-                                                  type="ArchListType" use="optional"/>
-                                                  <xs:attribute name="SupModList"
-                                                  type="ModuleListType" use="optional"/>
-                                                  <xs:attribute name="FeatureFlag"
-                                                  type="xs:normalizedString" use="optional"/>
-                                                  </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element minOccurs="0" maxOccurs="unbounded"
-                                            name="AsBuilt">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This section
-                                                  contains information about how the module was
-                                                  coded, such as Compiler Tools, Flags, PCDs (only
-                                                  PatchPcd and/or PcdEx) and Library Class Instances
-                                                  used to build the binary. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:sequence>
-
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="PatchPcdValue">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The element is
-                                                  the Patchable PCD Value that was used during the
-                                                  build. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:sequence>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="TokenSpaceGuidValue"
-                                                  type="RegistryFormatGuid"/>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="PcdCName" type="xs:NCName"/>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="Token">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  <xs:maxLength value="10"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="DatumType" type="PcdDatumTypes"/>
-                                                  <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="MaxDatumSize">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This field is
-                                                  required if the Pcd Datum Type is VOID* </xs:documentation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="Value" type="xs:normalizedString"/>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="Offset">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element ref="HelpText" minOccurs="0"
-                                                  maxOccurs="unbounded"/>
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="PcdError">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> Error
-                                                  information implemented by the module.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:sequence>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="ErrorNumber">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="ErrorMessage">
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="xs:string">
-                                                  <xs:attribute name="Lang" type="xs:language"
-                                                  default="en-us" use="optional"/>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                  </xs:sequence>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                  </xs:sequence>
-                                                  </xs:complexType>
-                                                  </xs:element>
-
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="PcdExValue">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The element is
-                                                  the DynamicEx PCD Value that was used during the
-                                                  build. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:sequence>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="TokenSpaceGuidValue"
-                                                  type="RegistryFormatGuid"/>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="Token">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  <xs:maxLength value="10"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="DatumType" type="PcdDatumTypes"/>
-                                                  <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="MaxDatumSize">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This field is
-                                                  required if the Pcd Datum Type is VOID*
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="Value" type="xs:normalizedString"/>
-                                                  <xs:element ref="HelpText" minOccurs="0"
-                                                  maxOccurs="unbounded"/>
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="PcdError">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> Error
-                                                  information implemented by the module.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:sequence>
-                                                  <xs:element minOccurs="1" maxOccurs="1"
-                                                  name="ErrorNumber">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The minLength
-                                                  of 3 is required to handle the "0x" prefix to the
-                                                  hex number. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:simpleType>
-                                                  <xs:restriction base="HexNumber">
-                                                  <xs:minLength value="3"/>
-                                                  </xs:restriction>
-                                                  </xs:simpleType>
-                                                  </xs:element>
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="ErrorMessage">
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="xs:string">
-                                                  <xs:attribute name="Lang" type="xs:language"
-                                                  default="en-us" use="optional"/>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                  </xs:sequence>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                  </xs:sequence>
-                                                  </xs:complexType>
-                                                  </xs:element>
-
-                                                  <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="LibraryInstances">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This is the
-                                                  actual library instance that was used to link
-                                                  against the module. </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:sequence>
-                                                  <xs:element minOccurs="1" maxOccurs="unbounded"
-                                                  name="GUID">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This GUID and
-                                                  the Version attribute uniquely identify the actual
-                                                  Library Instance linked in this module.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:complexType>
-                                                  <xs:simpleContent>
-                                                  <xs:extension base="RegistryFormatGuid">
-                                                  <xs:attribute name="Version" type="xs:decimal"
-                                                  use="required">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:attribute>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                  </xs:sequence>
-                                                  </xs:complexType>
-                                                  </xs:element>
-
-                                                  <xs:element minOccurs="0" maxOccurs="unbounded"
-                                                  name="BuildFlags">
-                                                  <xs:complexType mixed="true">
-                                                  <xs:simpleContent>
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> Any
-                                                  description of OS, Tool, and flags for the
-                                                  individual tool can go in this section.
-                                                  </xs:documentation>
-                                                  </xs:annotation>
-                                                  <xs:extension base="xs:string">
-                                                  <xs:anyAttribute processContents="lax"/>
-                                                  </xs:extension>
-                                                  </xs:simpleContent>
-                                                  </xs:complexType>
-                                                  </xs:element>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <!-- End of AsBuilt -->
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of BinaryFiles Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="0" maxOccurs="unbounded"
-                                            name="Description">
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                  <xs:extension base="xs:string">
-                                                  <xs:attribute name="Lang" type="xs:language"
-                                                  default="en-us" use="optional"/>
-                                                  </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="GUID">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> This GUID and
-                                                  the Version attribute uniquely identify Package
-                                                  that this Module depends on. </xs:documentation>
-                                            </xs:annotation>
-                                            <xs:complexType>
-                                                <xs:simpleContent>
-                                                  <xs:extension base="RegistryFormatGuid">
-                                                  <xs:attribute name="Version" type="xs:decimal"
-                                                  use="optional">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> This value,
-                                                  along with the GUID, is used to uniquely identify
-                                                  this object. If the version attribute is not
-                                                  specified, the most recent version of the package
-                                                  can be used. </xs:documentation>
-                                                  </xs:annotation>
-                                                  </xs:attribute>
-                                                  </xs:extension>
-                                                </xs:simpleContent>
-                                            </xs:complexType>
-                                        </xs:element>
-                                    </xs:sequence>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PackageDependencies -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Guids">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
-                                            type="xs:normalizedString">
-                                            <xs:annotation>
-                                                <xs:documentation xml:lang="en-us"> Only valid for
-                                                  Variable GUID types. </xs:documentation>
-                                                <xs:documentation> This can be either a Hex Array or
-                                                  C string in unicode format: L"string" Data.
-                                                </xs:documentation>
-                                            </xs:annotation>
-                                        </xs:element>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us">The module does
-                                                  not install the GUID, and the GUID must be present
-                                                  for the module to execute. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  does not install the GUID, however, the GUID will
-                                                  be used if it is present. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The module
-                                                  always installs the GUID. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The Module
-                                                  will install the GUID under certain execution
-                                                  paths. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                                <xs:enumeration value="UNDEFINED">
-                                                  <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> The package
-                                                  creator knows that a GUID is used, but does not
-                                                  know how it is used. </xs:documentation>
-                                                  </xs:annotation>
-                                                </xs:enumeration>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="GuidType" type="GuidListType" use="required"/>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Guids Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A listing of protocols required or
-                            produced by this module. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol"
-                                nillable="true">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="TO_START"/>
-                                                <xs:enumeration value="BY_START"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Protocols Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced
-                            by this module. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi"
-                                nillable="true">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="Usage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-                                    </xs:attribute>
-                                    <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PPIs Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="Externs">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> These elements specify additional
-                            information about the module. This area may be used by tools to generate
-                            code. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:choice minOccurs="1">
-                                            <xs:sequence>
-                                                <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="EntryPoint" type="xs:NCName"/>
-                                                <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="UnloadImage" type="xs:NCName"/>
-                                            </xs:sequence>
-                                            <xs:sequence>
-                                                <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="Constructor" type="xs:NCName"/>
-                                                <xs:element minOccurs="0" maxOccurs="1"
-                                                  name="Destructor" type="xs:NCName"/>
-                                            </xs:sequence>
-                                        </xs:choice>
-                                        <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Externs Section -->
-
-                <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section describes how a platform is
-                            coded with respect to the platform configuration knobs.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element minOccurs="1" maxOccurs="1" name="CName"
-                                            type="xs:NCName"/>
-                                        <xs:element minOccurs="1" maxOccurs="1"
-                                            name="TokenSpaceGuidCName" type="xs:NCName"/>
-                                        <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
-                                            type="xs:normalizedString"/>
-                                        <xs:element ref="HelpText" minOccurs="0"
-                                            maxOccurs="unbounded"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="PcdItemType" type="PcdItemTypes"
-                                        use="required"/>
-                                    <xs:attribute name="PcdUsage" use="required">
-                                        <xs:simpleType>
-                                            <xs:restriction base="xs:NCName">
-                                                <xs:enumeration value="PRODUCES"/>
-                                                <xs:enumeration value="SOMETIMES_PRODUCES"/>
-                                                <xs:enumeration value="CONSUMES"/>
-                                                <xs:enumeration value="SOMETIMES_CONSUMES"/>
-                                                <xs:enumeration value="UNDEFINED"/>
-                                            </xs:restriction>
-                                        </xs:simpleType>
-
-
-                                    </xs:attribute>
-                                    <xs:attribute name="SupArchList" type="ArchListType"
-                                        use="optional"/>
-                                    <xs:attribute name="SupModList" type="ModuleListType"
-                                        use="optional"/>
-                                    <xs:attribute name="FeatureFlag" type="xs:normalizedString"
-                                        use="optional"/>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PcdCoded Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the PEI dependency expression
-                            for a Dependency Section. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Expression" type="xs:string" minOccurs="1"
-                                maxOccurs="1">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> An in-fix expression, of C
-                                        identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
-                                        as well as parenthesis () in the in-fix notation. The
-                                        operators are restricted to grammar defined in the PI
-                                        specification. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of PeiDepex Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the DXE dependency expression
-                            for a Dependency Section. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Expression" type=" xs:string " minOccurs="1"
-                                maxOccurs="1">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> An in-fix expression, of C
-                                        identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
-                                        as well as parenthesis () in the in-fix notation. The
-                                        operators are restricted to grammar defined in the PI
-                                        specification. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of DxeDepex Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the SMM dependency expression
-                            for a Dependency Section. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Expression" type=" xs:string " minOccurs="1"
-                                maxOccurs="1">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> An in-fix expression, of C
-                                        identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
-                                        as well as parenthesis () in the in-fix notation. The
-                                        operators are restricted to grammar defined in the PI
-                                        specification. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-                        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-                        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of SmmDepex Section -->
-
-
-                <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used to provide comments
-                            and/or list auxiliary files, such as pdb or map files.
-                        </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language"
-                                                default="en-us" use="optional"/>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is the path and
-                                        filename location within the ZIP file. </xs:documentation>
-                                </xs:annotation>
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:anyURI">
-                                            <xs:attribute name="Executable" type="xs:boolean"
-                                                default="false" use="optional">
-                                                <xs:annotation>
-                                                  <xs:documentation xml:lang="en-us"> If true, used
-                                                  by installation tools to ensure that a file that
-                                                  must be executable has the correct properties to
-                                                  permit execution. </xs:documentation>
-                                                </xs:annotation>
-                                            </xs:attribute>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Module Surface Area Misc Section -->
-
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This section is used for any processing
-                            instructions that may be custom to the content provided by the
-                            distribution that are common to module. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
-                        <xs:documentation xml:lang="en-us"> The content can be plain text as well as
-                            any user-defined, properly formatted XML structure. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType mixed="true">
-                        <xs:attribute name="UserId" type="xs:NCName" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This is a single word identifier
-                                    for grouping similar content. For example, ReferenceBuild might
-                                    be used to identify non-PI compliant build steps, with two
-                                    different UserExtensions sections, one with an Identifier of
-                                    Prebuild, and another of PostBuild. Both UserExtensions sections
-                                    would use the same UserId. </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="Identifier" type="xs:string" use="required">
-                            <xs:annotation>
-                                <xs:documentation xml:lang="en-us"> This can be any string used to
-                                    differentiate or identify this section from other UserExtensions
-                                    sections. </xs:documentation>
-                                <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
-                                    Identifier might indicate specific steps and tools required
-                                    before processing module content, while a different
-                                    UserExtensions section with a POST_PROCESS Identifier might
-                                    describe steps that need to be executed after operations on this
-                                    module. </xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:anyAttribute processContents="lax"/>
-                    </xs:complexType>
-                </xs:element>
-                <!-- End of Module Surface Area UserExtensions Section -->
-
-            </xs:sequence>
-            <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This attribute is used when the binaries are
-                        distributed for this module and no code generation from source files is
-                        required. If set, then the BinaryFiles section should be used, and any files
-                        listed in the SourceFiles section do not have to be built. Additionally, the
-                        AsBuilt section for each binary file must be included. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-
-    </xs:element>
-    <!-- End of the ModuleSurfaceArea element. -->
-
-    <xs:element name="Tools">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="1" maxOccurs="1" name="Name"
-                                type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us">This is the User Interface
-                                        Name for this Tools Distribution.</xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        Copyright is different from the Distribution Package
-                                        copyright. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        License is different from the Distribution Package license.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
-                                type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        Abstract is different from the Distribution Package
-                                        Abstract. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Description"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        Description is different from the Distribution Package
-                                        Description. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the path and filename location
-                            within the ZIP file. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:anyURI">
-                                <xs:attribute name="OS" type="SupportedOs" use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> This is required for
-                                            tools that execute; it should not be used for
-                                            configuration files. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                                <xs:attribute name="Executable" type="xs:boolean" default="false"
-                                    use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> If true, used by
-                                            installation tools to ensure that a file that must be
-                                            executable has the correct properties to permit
-                                            execution. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the Tools element. -->
-
-    <xs:element name="MiscellaneousFiles">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> This section contains a list of files that are not
-                part of the code distributed with modules, packages or tools. </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="1" name="Header">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Name"
-                                type="xs:normalizedString">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> The User interface name for
-                                        this content. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
-                                type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        Copyright is different from the Distribution Package
-                                        Copyright. </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
-                                <xs:annotation>
-                                    <xs:documentation xml:lang="en-us"> This is only required if the
-                                        License is different from the Distribution Package License.
-                                    </xs:documentation>
-                                </xs:annotation>
-                            </xs:element>
-                            <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
-                                type="xs:normalizedString"/>
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
-                                <xs:complexType>
-                                    <xs:simpleContent>
-                                        <xs:extension base="xs:string">
-                                            <xs:attribute name="Lang" type="xs:language"
-                                                default="en-us" use="optional"/>
-                                        </xs:extension>
-                                    </xs:simpleContent>
-                                </xs:complexType>
-                            </xs:element>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
-                    <xs:annotation>
-                        <xs:documentation xml:lang="en-us"> This is the path and filename location
-                            within the ZIP file. </xs:documentation>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:simpleContent>
-                            <xs:extension base="xs:anyURI">
-                                <xs:attribute name="Executable" type="xs:boolean" default="false"
-                                    use="optional">
-                                    <xs:annotation>
-                                        <xs:documentation xml:lang="en-us"> If true, used by
-                                            installation tools to ensure that a file that must be
-                                            executable has the correct properties to permit
-                                            execution. </xs:documentation>
-                                    </xs:annotation>
-                                </xs:attribute>
-                            </xs:extension>
-                        </xs:simpleContent>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-    <!-- End of the Misc element. -->
-
-    <xs:element name="UserExtensions">
-        <xs:complexType mixed="true">
-            <xs:sequence>
-                <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
-            </xs:sequence>
-            <xs:attribute name="UserId" type="xs:NCName" use="required">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This is a single word identifier for
-                        grouping similar content. For example, ReferenceBuild might be used to
-                        identify non-PI compliant build steps, with two different UserExtensions
-                        sections, one with an Identifier of Prebuild, and another of PostBuild. Both
-                        UserExtensions sections would use the same UserId. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="Identifier" type="xs:string" use="optional">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This can be any string used to differentiate
-                        or identify this section from other UserExtensions sections. </xs:documentation>
-                    <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might
-                        indicate specific steps and tools required before processing distribution
-                        package content, while a different UserExtensions section with a
-                        POST_PROCESS Identifier might describe steps that need to be executed after
-                        operations on this content. </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:anyAttribute processContents="lax"/>
-        </xs:complexType>
-    </xs:element>
-    <!-- The following elsements are common definitions used with the ref attribute for elements. -->
-
-    <xs:element name="HelpText">
-        <xs:complexType>
-            <xs:simpleContent>
-                <xs:extension base="xs:string">
-                    <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
-                </xs:extension>
-            </xs:simpleContent>
-        </xs:complexType>
-    </xs:element>
-
-    <!-- The following attribute groups are used in various elements above. -->
-
-    <xs:attributeGroup name="SupportedArchMod">
-        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
-        <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
-    </xs:attributeGroup>
-
-    <!-- The following data types are used to restrict content. -->
-
-    <xs:simpleType name="ArchListType">
-        <xs:list itemType="ArchTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="ArchTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="IA32"/>
-            <xs:enumeration value="X64"/>
-            <xs:enumeration value="IPF"/>
-            <xs:enumeration value="EBC"/>
-            <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Any processor architecture not listed above.
-                        The Architecture must be a target architecture of one or more compiler tool
-                        chains. </xs:documentation>
-                </xs:annotation>
-            </xs:pattern>
-        </xs:restriction>
-    </xs:simpleType>
-
-
-    <xs:simpleType name="FamilyTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="MSFT"/>
-            <xs:enumeration value="GCC"/>
-            <xs:pattern value="[A-Z][a-zA-Z0-9]*">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Any other family of build utilities for
-                        which compiler tools exist. </xs:documentation>
-                </xs:annotation>
-            </xs:pattern>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="GuidListType">
-        <xs:list itemType="GuidTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="GuidTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="Event"/>
-            <xs:enumeration value="File"/>
-            <xs:enumeration value="FV"/>
-            <xs:enumeration value="GUID"/>
-            <xs:enumeration value="Hii"/>
-            <xs:enumeration value="HOB"/>
-            <xs:enumeration value="SystemTable"/>
-            <xs:enumeration value="TokenSpaceGuid"/>
-            <xs:enumeration value="Variable"/>
-            <xs:enumeration value="UNDEFINED"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="HexNumber">
-        <xs:restriction base="xs:hexBinary">
-            <xs:pattern value="0x([a-fA-F0-9])+"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="Md5Sum">
-        <xs:restriction base="xs:normalizedString">
-            <xs:pattern value="[a-zA-Z0-9]{32}"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="ModuleListType">
-        <xs:list itemType="ModuleTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="ModuleTypes">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> The following module types are defined by
-                specifications. </xs:documentation>
-            <xs:documentation xml:lang="en-us"> Module types for components and libraries defined
-                for this distribution mechanism. </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="BASE ">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Use of this module is not restricted.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_CORE">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE
-                        core. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
-                        driver. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_RUNTIME_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
-                        runtime driver. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_SAL_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE
-                        runtime driver. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="DXE_SMM_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM
-                        driver. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PEI_CORE">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI
-                        core. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PEIM">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="SEC">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to Security
-                        phase. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UEFI_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UEFI_RUNTIME_DRIVER">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
-                        drivers.</xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UEFI_APPLICATION">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only valid for UEFI
-                        applications. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="SMM_CORE">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
-                        core.</xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="USER_DEFINED">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This content is restricted to a specific
-                        implementation. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="UNDEFINED">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This enumeration is for use in a list that
-                        where the package creator does not know the what module types are supported
-                        by a module. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This pattern has been added for use in a
-                        module lists - for future expansion. </xs:documentation>
-                </xs:annotation>
-            </xs:pattern>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="PcdDatumTypes">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD
-                specification (or PCD section of the UEFI/PI specifications.) </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:normalizedString">
-            <xs:enumeration value="UINT8"/>
-            <xs:enumeration value="UINT16"/>
-            <xs:enumeration value="UINT32"/>
-            <xs:enumeration value="UINT64"/>
-            <xs:enumeration value="BOOLEAN"/>
-            <xs:enumeration value="VOID*"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="PcdItemListType">
-        <xs:list itemType="PcdItemTypes"/>
-    </xs:simpleType>
-
-    <xs:simpleType name="PcdItemTypes">
-        <xs:restriction base="xs:NCName">
-            <xs:enumeration value="FeaturePcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The Feature PCD is a binary, evaluating to
-                        either true or false. This is used during build to include/exclude content.
-                        It can also be used during execution to force execution paths within
-                        drivers, or to enable/disable features within a driver for a given platform.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="FixedPcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set
-                        at build time. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PatchPcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is set at
-                        build time, and that can be modified within a binary file. Additional
-                        information, such as the offset location of the value, along with it's
-                        length may need to be provided.</xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="Pcd">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> This PCD type has an overloaded definition.
-                        Prior to build, the platform integrator may choose to implement a PCD as
-                        Fixed, Patchable or a Dynamic PCD. If the platform integrator choose to use
-                        the PCD as dynamic, then a PCD driver is required in the platform
-                        (PEI/DXE/both) to track the PCD in some sort of 'database' of these items.
-                        For Dynamic PCDs, the PcdGet* must pass in the token space guid and the
-                        token number to retrieve data (PcdSet* also needs these values.)
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="PcdEx">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> The PCD can only be used as Dynamic, and the
-                        platform firmware must contain a driver to maintain a 'database' of these
-                        items. For Dynamic PCDs, the PcdGet* must pass in the token space guid and
-                        the token number to retrieve data (PcdSet* also needs these values.)
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-        </xs:restriction>
-    </xs:simpleType>
-
-
-
-    <xs:simpleType name="RegistryFormatGuid">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal
-                character sets that are separated by a dash (-) character. </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:pattern
-                value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"
-            />
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:simpleType name="SupportedOs">
-        <xs:annotation>
-            <xs:documentation xml:lang="en-us"> The EDK II build system supports workstations
-                running one of the following supported operating systems. This is the OS for the
-                developer's workstation, not the target platform. </xs:documentation>
-        </xs:annotation>
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="Win32">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
-                        Vista. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="Win64">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
-                        Vista. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="Linux32"/>
-            <xs:enumeration value="Linux64"/>
-            <xs:enumeration value="OS/X32"/>
-            <xs:enumeration value="OS/X64"/>
-            <xs:enumeration value="GenericWin">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch
-                        files. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:enumeration value="GenericNix">
-                <xs:annotation>
-                    <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for
-                        any Linux and Mac OS/X. </xs:documentation>
-                </xs:annotation>
-            </xs:enumeration>
-            <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Filename: DistributionPackage.xsd\r
+\r
+Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.\r
+\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+-->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"\r
+    targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">\r
+  <xs:element name="DistributionPackage">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        This schema defines the UEFI/PI Distribution Package description (PKG)\r
+        file. It describes the content of:\r
+      </xs:documentation>\r
+      <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>\r
+      <xs:documentation xml:lang="en-us">\r
+        2) Modules in either source or binary format. (Note that Binary format\r
+        is for FFS leaf section file types only, complete FFS files cannot be distributed using this\r
+        distribution format.)\r
+      </xs:documentation>\r
+      <xs:documentation xml:lang="en-us">\r
+        3) The distribution of custom tools used to modify the binary images to\r
+        create UEFI/PI compliant images.\r
+      </xs:documentation>\r
+      <xs:documentation xml:lang="en-us">\r
+        4) Finally, it can be used to distribute other miscellaneous content\r
+        that is not specific to UEFI/PI images.\r
+      </xs:documentation>\r
+      <xs:documentation xml:lang="en-us">\r
+        The Package Surface Area describes the content of packages, while the\r
+        Module Surface Area provides information relevant to source and/or binary distributions.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This header contains (legal) information usually required\r
+              for distributing both binary and/or source code.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Packages are groups of files and/or modules that are similar\r
+              in nature.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Packages are uniquely identified by a package GUID and a\r
+              package version.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A package can declare public mappings of C names to GUID\r
+              values.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A package can provide header files for library classes\r
+              and/or other industry standard definitions.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A package can also declare public mappings of platform\r
+              configuration database (PCD) &quot;knobs&quot; to control features and operation of modules\r
+              within a platform.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Finally, a package lists the library instances and/or\r
+              modules that are provided in a distribution package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The listing of UEFI/PI compliant modules in this\r
+              distribution that are NOT part of a Package. Every module that is provided as part of a\r
+              package needs to be described in a PackageSurfaceArea.Modules section.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The ModuleSurfaceArea section describes how each module in a\r
+              distribution is coded, or, in the case of a binary module distribution, how it was built.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              UEFI/PI compliant libraries and modules are uniquely\r
+              identified by the Module's GUID and version number.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section will typically be used for modules that don't\r
+              require any additional files that would be included in a package. For example, the Enhanced\r
+              FAT driver binary does not need to have a package description, as no additional files are\r
+              provided.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is for distributing vendor specific executable\r
+              tools, tool source code and/or configuration files. These tools are primarily for\r
+              manipulating code and/or binary images.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              1) Parse build meta-data files to create source code files\r
+              and build scripts.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              3) Generate binary files from certain types of text/unicode\r
+              files.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              5) Implement external encoding/decoding/signature/GUIDed\r
+              tools.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              6) Distribution Package create/install/remove tools.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The list of miscellaneous files in this distribution. Any\r
+              files that are not listed in either the Package, Module or Tools sections can be listed\r
+              here. This section can be used to distribute specifications for packages and modules that\r
+              are not &quot;industry standards&quot; such as a specification for a chipset or a video\r
+              device.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The UserExtensions section is used to disseminate processing\r
+              instructions that may be custom to the content provided by the distribution. This section\r
+              contains information that is common to all aspects of this distribution.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+      </xs:sequence>\r
+\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- End of the DistributionPackage Description  -->\r
+\r
+  <xs:element name="DistributionHeader">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        This section defines the content of the UEIF/PI compliant Distribution\r
+        Package Header. This is the only required element of a UEFI/PI compliant distribution package.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This is the User Interface Name for this Distribution\r
+              Package.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Each Distribution Package is uniquely identified by its\r
+              GUID and Version number.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:normalizedString">\r
+                <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">\r
+                  <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us">\r
+                      The reference name of the Distribution\r
+                      Package file. This single word name can be used by tools as a keyword or for\r
+                      directory and/or file creation.\r
+                    </xs:documentation>\r
+                    <xs:documentation xml:lang="en-us">\r
+                      White space and special characters (dash and\r
+                      underscore characters may be used) are not permitted in this name.\r
+                    </xs:documentation>\r
+                  </xs:annotation>\r
+                </xs:attribute>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This 128-bit GUID and the Version attribute uniquely\r
+              identify this Distribution Package.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Backward compatible releases of a distribution package need\r
+              only change the version number, while non-backward compatible changes require the GUID to\r
+              change (resetting the version number to 1.0 is optional.)\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="RegistryFormatGuid">\r
+                <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                  <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us">\r
+                      This value, along with the GUID, is used to\r
+                      uniquely identify this object. The higher the number, the more recent the\r
+                      content.\r
+                    </xs:documentation>\r
+                  </xs:annotation>\r
+                </xs:attribute>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A string identifying who created this distribution package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The date and time this distribution was created. The format\r
+              is: YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T character separator\r
+              between the calendar date and the time.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The copyright for this file that is generated by the creator\r
+              of the distribution. If a derivative work is generated from an existing distribution, then\r
+              the existing copyright must be maintained, and additional copyrights may be appended to the\r
+              end of this element. It may also be the primary copyright for all code provided in the\r
+              Distribution Package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:string">\r
+                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="License">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A license that describes any restrictions on the use of this\r
+              distribution. If a derivative work is allowed by the original license and a derivative work\r
+              is generated from an existing distribution, then the existing license must be maintained,\r
+              and additional licenses may be appended to the end of this element. It may also be the\r
+              primary license for all code provided in the distribution file. Alternatively, this may\r
+              point to a filename that contains the License. The file (included in the content zip file)\r
+              will be stored in the same location as the distribution package's .pkg file.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:string">\r
+                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A one line description of the Distribution Package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:normalizedString">\r
+                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A complete description of the Distribution Package. This\r
+              description may include the release name of the file, the version of the file, and a\r
+              complete description of the file contents and/or features including a description of the\r
+              updates since the previous file release.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:string">\r
+                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The packaging utilities will use this MD5 sum value of the\r
+              included ZIP file containing files and/or code. If this element is not present, then\r
+              installation tools should assume that the content is correct, or that other methods may be\r
+              needed to verify content.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              #1 Updated to present date and new version which is\r
+              important to reflect the present state of the matter\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              #2 Added definition/enumeration of UNDEFINED type 2 is\r
+              important since there is a large body of legacy code for which the GUID’s and other\r
+              code/data objects were not decorated with their usage. This document will allow for\r
+              importing today’s source artifacts and producing decorations using the ‘Undefined’ versus\r
+              having an error\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              #3 Allow for inclusion of ARM and future architecture\r
+              types\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+      </xs:sequence>\r
+      <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            If set to true, all content within this Distribution Package\r
+            should NOT be modified. The default permits modification of all content.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:attribute>\r
+      <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            If set to true, then the content can be repackaged into another\r
+            distribution package. The default prohibits repackaging the Distribution content.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:attribute>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- End of the DistributionHeader element. -->\r
+\r
+  <xs:element name="PackageSurfaceArea">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        A package is a collection of related objects - Includes, Libraries and\r
+        Modules.\r
+      </xs:documentation>\r
+      <xs:documentation xml:lang="en-us">\r
+        Each package is uniquely identified by its GUID and Version number.\r
+        Backward compatible releases of a package need only change the version number, while non-backward\r
+        compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Header">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is the User Interface Name for this\r
+                    package.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:normalizedString">\r
+                      <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This is a single word BaseName\r
+                            of the package. This BaseName can be used by tools as a keyword\r
+                            and for directory/file creation.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This GUID and the Version attribute uniquely\r
+                    identify a given package.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="RegistryFormatGuid">\r
+                      <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This value, along with the GUID,\r
+                            is used to uniquely identify this object.\r
+                          </xs:documentation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            Backward compatible changes must\r
+                            make sure this number is incremented from the most recent\r
+                            version. Non-backward compatible changes require a new GUID, and\r
+                            the version can be reset.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    If the package requires a different copyright\r
+                    than the distribution package, this element can list one or more copyright\r
+                    lines.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="License">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    If the package requires licenses that are\r
+                    different from the distribution package license, this element can contain one or\r
+                    more license text paragraphs (or license filenames.)\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    A one line description of this package.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:normalizedString">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    A complete description of a package. This\r
+                    description may include the release name of the package, the version of the\r
+                    package, and a complete description of the package contents and/or features\r
+                    including a description of the updates since the previous package’s release.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This element is the location (in the ZIP file)\r
+                    for the root directory of a package.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea Header element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The term cloned is used here to indicate that this package\r
+              as been copied and modified to a completely different package. An example might be for a new\r
+              generation of chipsets that have few or no elements in common with the original.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This GUID and the Version attribute uniquely\r
+                    identify the Package that this Package was copied from.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="RegistryFormatGuid">\r
+                      <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This value, along with the GUID,\r
+                            is used to uniquely identify the package that this package was\r
+                            cloned from.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea ClonedFrom element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Library Classes are public interfaces that can be used by\r
+              modules. One or more library instances can implement a library class, however only one\r
+              library instance can be linked to an individual module. This provides the platform\r
+              integrator with the flexibility of choosing one library instance's implementation over a\r
+              different library instance.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          The header file provides definitions\r
+                          and function prototypes for a library class. Modules can be coded\r
+                          against these functions, using the definitions in this header,\r
+                          without concerning themselves about the libraries' implementation\r
+                          details. This is a PackagePath relative path and filename for the\r
+                          include file.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">\r
+                      <xs:complexType>\r
+                        <xs:sequence>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                This GUID and the\r
+                                Version attribute uniquely identify the Recommended Library\r
+                                Instance.\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:complexType>\r
+                              <xs:simpleContent>\r
+                                <xs:extension base="RegistryFormatGuid">\r
+                                  <xs:attribute name="Version" type="xs:decimal"\r
+                                  use="optional">\r
+                                    <xs:annotation>\r
+                                      <xs:documentation xml:lang="en-us">\r
+                                        This value, along with\r
+                                        the GUID, is used to uniquely identify this object. If this\r
+                                        value is not specified, then any version of the library\r
+                                        instance is recommended.\r
+                                      </xs:documentation>\r
+                                    </xs:annotation>\r
+                                  </xs:attribute>\r
+                                </xs:extension>\r
+                              </xs:simpleContent>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Keyword" type="xs:NCName" use="required">\r
+                    <xs:annotation>\r
+                      <xs:documentation xml:lang="en-us">\r
+                        The single word name of the Library\r
+                        Class that module developers will use to identify a library class\r
+                        dependency.\r
+                      </xs:documentation>\r
+                    </xs:annotation>\r
+                  </xs:attribute>\r
+                  <xs:attributeGroup ref="SupportedArchMod"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea LibraryClassDeclarations element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is used to list header files for industry\r
+              standards not under the auspices of UEFI.org. For example, headers that contain definitions\r
+              and data structures for the USB specifications.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          The package relative path and\r
+                          filename (in the content zip file) of the industry standard include\r
+                          file.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea IndustryStdIncludes element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              All top level header files that are included by a package\r
+              that are not listed above. They cannot be:\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          This is the Package relative path\r
+                          and filename location within the content ZIP file.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base="xs:anyURI">\r
+                            <xs:attributeGroup ref="SupportedArchMod"/>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea PackageIncludes element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Modules">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This section lists the Module Surface Area for\r
+                    all modules provided with this package.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea Modules element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section defines the mapping of GUID C names to GUID\r
+              values as a Registry Format GUID.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Modules that use these GUIDs must specify their dependency\r
+              on this package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"\r
+                        type="RegistryFormatGuid"/>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>\r
+                  <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/>\r
+                  <xs:attributeGroup ref="SupportedArchMod"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea GuidDeclarations element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section defines the mapping of Protocol C names to GUID\r
+              values as a Registry Format GUID.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Modules that use these Protocols must specify their\r
+              dependency on this package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    Individual Protocol Declarations\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"\r
+                        type="RegistryFormatGuid"/>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>\r
+                  <xs:attributeGroup ref="SupportedArchMod"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea ProtocolDeclarations element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section defines the mapping of Ppi C names to GUID\r
+              values as a Registry Format GUID.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Modules that use these Ppis must specify their dependency on\r
+              this package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"\r
+                        type="RegistryFormatGuid"/>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>\r
+                  <xs:attributeGroup ref="SupportedArchMod"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea PpiDeclarations element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is used to declare platform configuration knobs\r
+              that are defined by this package.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              Modules that use these PCD values must specify their\r
+              dependency on this package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname"\r
+                        type="xs:NCName">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          Specifies the C name of the Token\r
+                          Space GUID of which this PCD Entry is a member. This C name should\r
+                          also be listed in the GUIDs section, (specified above,) where the C\r
+                          name is assigned to a GUID value.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          Specifies the 32-bit token value for\r
+                          this PCD Entry. The Token number must be unique to the Token Space\r
+                          that declares the PCD.\r
+                        </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          The minLength of 3 is required to\r
+                          handle the "0x" prefix to the hex number.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:simpleType>\r
+                        <xs:restriction base="HexNumber">\r
+                          <xs:minLength value="3"/>\r
+                          <xs:maxLength value="10"/>\r
+                        </xs:restriction>\r
+                      </xs:simpleType>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          A string that contains the data type\r
+                          of this PCD Entry. PCD data types are restricted to the following\r
+                          set:UINT8, UINT16, UINT32, UINT64, VOID*, BOOLEAN.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          A string that contains one or more\r
+                          PCD Item types separated by spaces. The PCD Item types are\r
+                          restricted to FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"\r
+                        type="xs:normalizedString"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          This is a recommended maximum data\r
+                          size for VOID* data types, the actual value should be defined by the\r
+                          Platform Integrator. It is not required for the other data types.\r
+                        </xs:documentation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          The minLength of 3 is required to\r
+                          handle the "0x" prefix to the hex number.\r
+                        </xs:documentation>\r
+\r
+                      </xs:annotation>\r
+                      <xs:simpleType>\r
+                        <xs:restriction base="HexNumber">\r
+                          <xs:minLength value="3"/>\r
+                        </xs:restriction>\r
+                      </xs:simpleType>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-US">\r
+                          This entry contains prompt\r
+                          information, that may used by tools to assist platform integrators\r
+                          with choosing the correct values\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base="xs:string">\r
+                            <xs:attribute name="Lang" type="xs:language" default="en-us"\r
+                                use="optional"/>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+\r
+                    <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          Valid Error messages that may be\r
+                          implemented in a module for the PCD Entry. Only One Error Number per\r
+                          PcdError, (multiple ErrorMessage entries are permitted) and multiple\r
+                          PcdError elements are permitted.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:complexType>\r
+                        <xs:sequence>\r
+                          <xs:choice minOccurs="1" maxOccurs="1">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                One of the following\r
+                                types of comparisons, which must be able to evaluate to\r
+                                either true or false.\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">\r
+                              <xs:annotation>\r
+                                <xs:documentation xml:lang="en-us">\r
+                                  The PCD Value must be\r
+                                  space separated list of values. Values are restricted to the\r
+                                  data type of this PCD.\r
+                                </xs:documentation>\r
+                              </xs:annotation>\r
+                              <xs:complexType>\r
+                                <xs:simpleContent>\r
+                                  <xs:extension base="xs:normalizedString">\r
+                                    <xs:attribute name="Lang" type="xs:language" use="optional"\r
+                                                            />\r
+                                  </xs:extension>\r
+                                </xs:simpleContent>\r
+                              </xs:complexType>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange"\r
+                                type="xs:normalizedString">\r
+                              <xs:annotation>\r
+                                <xs:documentation xml:lang="en-us">\r
+                                  The PCD must be within a\r
+                                  specified range of numeric values. Restricted to C style\r
+                                  Relational, Equality and Logical Operators and parenthesis\r
+                                  are valid. Only the CName for this PCD is permitted in the\r
+                                  ValidValueRange expression. All other values must be\r
+                                  numeric.\r
+                                </xs:documentation>\r
+                                <xs:documentation xml:lang="en-us">\r
+                                  LValue (op RValue)+\r
+                                </xs:documentation>\r
+                              </xs:annotation>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="Expression"\r
+                                type="xs:normalizedString">\r
+                              <xs:annotation>\r
+                                <xs:documentation xml:lang="en-us">\r
+                                  A in-fix logical\r
+                                  expression using C style logical operators.\r
+                                </xs:documentation>\r
+                              </xs:annotation>\r
+                            </xs:element>\r
+                          </xs:choice>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                A hexadecimal value for\r
+                                the error message as defined by specifications.\r
+                              </xs:documentation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                The minLength of 3 is\r
+                                required to handle the "0x" prefix to the hex number.\r
+                              </xs:documentation>\r
+\r
+                            </xs:annotation>\r
+                            <xs:simpleType>\r
+                              <xs:restriction base="HexNumber">\r
+                                <xs:minLength value="3"/>\r
+                              </xs:restriction>\r
+                            </xs:simpleType>\r
+                          </xs:element>\r
+                          <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                This string should be\r
+                                defined by specifications. There are pre-defined error\r
+                                number ranges in the UEFI/PI specification.\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:complexType>\r
+                              <xs:simpleContent>\r
+                                <xs:extension base="xs:string">\r
+                                  <xs:attribute name="Lang" type="xs:language" default="en-us"\r
+                                  use="optional"/>\r
+                                </xs:extension>\r
+                              </xs:simpleContent>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                  <xs:attributeGroup ref="SupportedArchMod"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea PcdDeclarations element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is used to describe any PCD interdependencies\r
+              or relationships.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This entry must used\r
+                    TokenSpaceGuidCName.PcdCname for every named PCD. Restricted to Relational,\r
+                    Equality and Logical Operators (NOT, AND, OR, GT, GE, EQ, LE, LT and XOR) and\r
+                    parenthesis are valid. Only the TokenSpaceGuidCName.PcdCname us permitted to\r
+                    name PCDs in the expression. All other values must be numeric.\r
+                  </xs:documentation>\r
+                  <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section contains files that are not part of the code\r
+              distributed with this package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    Only required if different from the Package\r
+                    Copyright.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    Only required if different from the Package\r
+                    License.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    A one line description of this section's\r
+                    content.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    A complete description of the files in this\r
+                    section.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is the PackagePath relative path and\r
+                    filename location within the ZIP file.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:anyURI">\r
+                      <xs:attribute name="Executable" type="xs:boolean" default="false"\r
+                          use="optional">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            If true, used by installation\r
+                            tools to ensure that a file that must be executable has the\r
+                            correct properties to permit execution.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea Misc element.  -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is used for any processing instructions that\r
+              may be custom to the content provided by this package that are common to this package.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType mixed="true">\r
+            <xs:sequence>\r
+              <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>\r
+            </xs:sequence>\r
+            <xs:attribute name="UserId" type="xs:NCName" use="required">\r
+              <xs:annotation>\r
+                <xs:documentation xml:lang="en-us">\r
+                  This is a single word identifier for grouping\r
+                  similar content that does not fit into previously defined sections or other sections\r
+                  of the Distribution.\r
+                </xs:documentation>\r
+              </xs:annotation>\r
+            </xs:attribute>\r
+            <xs:attribute name="Identifier" type="xs:string" use="required">\r
+              <xs:annotation>\r
+                <xs:documentation xml:lang="en-us">\r
+                  This can be used to differentiate multiple sections\r
+                  with a grouping.\r
+                </xs:documentation>\r
+                <xs:documentation xml:lang="en-us">\r
+                  For example, a PRE_PROCESS Identifier might indicate\r
+                  specific steps and tools required before processing module content, while a\r
+                  different UserExtensions section with a POST_PROCESS Identifier might describe steps\r
+                  that need to be executed after operations on the modules in this package.\r
+                </xs:documentation>\r
+              </xs:annotation>\r
+            </xs:attribute>\r
+            <xs:anyAttribute processContents="lax"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageSurfaceArea UserExtensions element. -->\r
+\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- End of the PackageSurfaceArea element. -->\r
+\r
+  <xs:element name="ModuleSurfaceArea">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        Each module is uniquely identified by its GUID and Version number.\r
+        Backward compatible releases of a module need only change the version number, while non-backward\r
+        compatible changes require the GUID to change (resetting the version number to 1.0 is optional.)\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Header">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is the User Interface Name for this Module.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:normalizedString">\r
+                      <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This is a single word BaseName\r
+                            that will be used to create a module meta-data file.\r
+                          </xs:documentation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This name should also be used to\r
+                            create output file names and directories.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This GUID and the Version attribute uniquely\r
+                    identify a given Module.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="RegistryFormatGuid">\r
+                      <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This value, along with the GUID,\r
+                            is used to uniquely identify this object.\r
+                          </xs:documentation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            Backward compatible changes must\r
+                            make sure this number is incremented from the most recent\r
+                            version. Non-backward compatible changes require a new GUID, and\r
+                            the version can be reset.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the Copyright is\r
+                    different from either the Package or Distribution copyright. Multiple copyright\r
+                    lines are permitted within this section.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="License">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the license is\r
+                    different from either the Package or Distribution license. Multiple licenses are\r
+                    permitted within this section.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    A brief text description of the module.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:normalizedString">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    A complete description of the module contents\r
+                    and/or features including a description of the updates since the previous module\r
+                    release.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of Module Surface Area Header Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              List general information about a module, including the\r
+              Supported Architectures, this module's type, specifications the module is coded against, and\r
+              other informational content.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    One of the Enumerated module types that limit\r
+                    the use of a module.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    For stand-alone modules that are NOT part of any\r
+                    package, this is the path to the root of the module as listed in the ZIP file.\r
+                    For modules included in a package, this is the location, relative to the root of\r
+                    the package (PackagePath) this module belongs to.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This element is only required for the PEIM that\r
+                    produces the PCD PPI or the DXE Driver that produces the PCD Protocol.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:simpleType>\r
+                  <xs:restriction base="xs:NCName">\r
+                    <xs:enumeration value="PEI_PCD_DRIVER"/>\r
+                    <xs:enumeration value="DXE_PCD_DRIVER"/>\r
+                  </xs:restriction>\r
+                </xs:simpleType>\r
+              </xs:element>\r
+\r
+              <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/>\r
+\r
+              <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/>\r
+\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is a list of other specifications that this\r
+                    module is written against. These entries can be used in #define statements\r
+                    (depending on the build system implementation, they may be autogenerated.)\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:NCName">\r
+                      <xs:attribute name="Version" type="xs:decimal" use="required"/>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    Different firmware execution paths may be taken\r
+                    based on a given state of the hardware, firmware, or through feature settings. A\r
+                    BootMode may be declared (PRODUCES) or discovered (CONSUMES) based on these\r
+                    states and feature settings. If the usage is UNDEFINE, it implies that a Boot\r
+                    Mode is used, but the package creator does not know how it is used. The\r
+                    supported boot modes map to the PI specification Boot Modes. The boot modes\r
+                    listed with Recovery are to indicate that the BootMode is valid during a\r
+                    recovery boot.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:sequence minOccurs="0">\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes">\r
+                      <xs:simpleType>\r
+                        <xs:list>\r
+                          <xs:simpleType>\r
+                            <xs:restriction base="xs:NCName">\r
+                              <xs:enumeration value="FULL"/>\r
+                              <xs:enumeration value="MINIMAL"/>\r
+                              <xs:enumeration value="NO_CHANGE"/>\r
+                              <xs:enumeration value="DIAGNOSTICS"/>\r
+                              <xs:enumeration value="DEFAULT"/>\r
+                              <xs:enumeration value="S2_RESUME"/>\r
+                              <xs:enumeration value="S3_RESUME"/>\r
+                              <xs:enumeration value="S4_RESUME"/>\r
+                              <xs:enumeration value="S5_RESUME"/>\r
+                              <xs:enumeration value="FLASH_UPDATE"/>\r
+                              <xs:enumeration value="RECOVERY_FULL"/>\r
+                              <xs:enumeration value="RECOVERY_MINIMAL"/>\r
+                              <xs:enumeration value="RECOVERY_NO_CHANGE"/>\r
+                              <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>\r
+                              <xs:enumeration value="RECOVERY_DEFAULT"/>\r
+                              <xs:enumeration value="RECOVERY_S2_RESUME"/>\r
+                              <xs:enumeration value="RECOVERY_S3_RESUME"/>\r
+                              <xs:enumeration value="RECOVERY_S4_RESUME"/>\r
+                              <xs:enumeration value="RECOVERY_S5_RESUME"/>\r
+                              <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>\r
+                              <xs:enumeration value="UNDEFINED"/>\r
+                            </xs:restriction>\r
+                          </xs:simpleType>\r
+                        </xs:list>\r
+                      </xs:simpleType>\r
+                    </xs:element>\r
+\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module always supports\r
+                              the given boot modes.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module may support a\r
+                              given mode on some execution paths.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module will change the\r
+                              boot mode.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIME_PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module will change the\r
+                              boot mode on some execution paths.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="UNDEFINED">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The package creator does not\r
+                              know how the boot mode is used.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    The functions that make up the Event, Timer, and\r
+                    Task Priority Services are used during preboot to create, close, signal, and\r
+                    wait for events; to set timers; and to raise and restore task priority levels as\r
+                    defined in the UEFI specification. GUIDed events should be listed in the Guids\r
+                    section.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module will register a\r
+                              notification function and calls the function when it is\r
+                              signaled.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module will register a\r
+                              notification function and calls the function when it is\r
+                              signaled on some execution paths.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module will signal all\r
+                              events in an event group.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module will signal all\r
+                              events in an event group under some execution paths.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="UNDEFINED">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The package creator does not\r
+                              know how an event is used.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="EventType" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
+                        <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
+                        <xs:enumeration value="UNDEFINED"/>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+\r
+\r
+                  </xs:attribute>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is a list of non-GUIDed Hand Off Blocks\r
+                    (HOBs) produced or consumed by this module.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="HobType" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="PHIT"/>\r
+                        <xs:enumeration value="MEMORY_ALLOCATION"/>\r
+                        <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
+                        <xs:enumeration value="FIRMWARE_VOLUME"/>\r
+                        <xs:enumeration value="LOAD_PEIM"/>\r
+                        <xs:enumeration value="UNDEFINED"/>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              A HOB must be present in the\r
+                              system.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              If present, the HOB will be\r
+                              used.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The HOB is always produced\r
+                              by the module.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The HOB may be produced by\r
+                              the module under some execution paths.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="UNDEFINED">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The package creator knows\r
+                              that a HOB is used, but does not know how it is used.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="SupportedArchMod"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of ModuleProperties Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section may be included for Modules that are copied\r
+              from a different module.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This GUID and the Version attribute uniquely\r
+                    identify the Module that this Module was copied from.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="RegistryFormatGuid">\r
+                      <xs:attribute name="Version" type="xs:decimal" use="required">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            This value, along with the GUID,\r
+                            is used to uniquely identify this object.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!--  End of ClonedFrom Section. -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A list of the different Library Classes consumed by a\r
+              driver, core and/or application module, or produced by a Library module.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us ">\r
+                          Used by tools to identify different\r
+                          instances of libraries that provide the library class. This keyword\r
+                          identifies the library class this module needs to be linked against.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">\r
+                      <xs:complexType>\r
+                        <xs:all>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                This GUID and the\r
+                                Version attribute uniquely identify the recommended Library\r
+                                Instance for this module .\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:complexType>\r
+                              <xs:simpleContent>\r
+                                <xs:extension base="RegistryFormatGuid">\r
+                                  <xs:attribute name="Version" type="xs:decimal"\r
+                                  use="optional">\r
+                                    <xs:annotation>\r
+                                      <xs:documentation xml:lang="en-us">\r
+                                        This value, along with\r
+                                        the GUID, is used to uniquely identify this object.\r
+                                      </xs:documentation>\r
+                                    </xs:annotation>\r
+                                  </xs:attribute>\r
+                                </xs:extension>\r
+                              </xs:simpleContent>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:all>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          Library instances can provide code\r
+                          for a library class, or may require other library instances\r
+                          themselves. Since different execution paths in a library (or module)\r
+                          may need different library classes based on some setting, library\r
+                          classes may not alway be required.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="PRODUCES"/>\r
+                        <xs:enumeration value="CONSUMES"/>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
+                        <xs:enumeration value="UNDEFINED"/>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+\r
+                  <xs:attributeGroup ref="SupportedArchMod"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional">\r
+                    <xs:annotation>\r
+                      <xs:documentation xml:lang="en-us">\r
+                        A FeatureFlag attribute must evaluate to\r
+                        either true or false - it may be a fixed value of true or false, a C\r
+                        name or an in-fix expression.\r
+                      </xs:documentation>\r
+                    </xs:annotation>\r
+                  </xs:attribute>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of LibraryClassDefinitions Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is the module relative\r
+                    (ModuleProperties.Path) path and filename location within the ZIP file.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:anyURI">\r
+                      <xs:attribute name="Family" type="FamilyTypes" use="optional">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            The Family attribute is used to\r
+                            restrict usage to a given family of compilers, such as GCC or\r
+                            MSFT. Since not all code processing tools use the same syntax,\r
+                            especially for assembly, this field can be used to identify\r
+                            different syntax.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                      <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                      <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                      <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of SourceFiles Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          This is the module relative\r
+                          (ModuleProperties.Path) path and filename location within the ZIP\r
+                          file.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base="xs:anyURI">\r
+                            <xs:attribute name="FileType" use="optional">\r
+                              <xs:simpleType>\r
+                                <xs:restriction base="xs:NCName">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      Binary file distribution\r
+                                      is limited to UEFI/PI FFS leaf section file types.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:enumeration value="GUID"/>\r
+                                  <xs:enumeration value="FREEFORM"/>\r
+                                  <xs:enumeration value="UEFI_IMAGE"/>\r
+                                  <xs:enumeration value="PE32">\r
+                                    <xs:annotation>\r
+                                      <xs:documentation xml:lang="en-us">\r
+                                        A UEFI/PI FFS Leaf\r
+                                        section file type, not a raw PE32 file.\r
+                                      </xs:documentation>\r
+                                    </xs:annotation>\r
+                                  </xs:enumeration>\r
+                                  <xs:enumeration value="PIC"/>\r
+                                  <xs:enumeration value="PEI_DEPEX"/>\r
+                                  <xs:enumeration value="DXE_DEPEX"/>\r
+                                  <xs:enumeration value="SMM_DEPEX"/>\r
+                                  <xs:enumeration value="COMPAT16"/>\r
+                                  <xs:enumeration value="DISPOSABLE"/>\r
+                                  <xs:enumeration value="TE"/>\r
+                                  <xs:enumeration value="VER"/>\r
+                                  <xs:enumeration value="UI"/>\r
+                                  <xs:enumeration value="BIN"/>\r
+                                  <xs:enumeration value="FV"/>\r
+                                </xs:restriction>\r
+                              </xs:simpleType>\r
+                            </xs:attribute>\r
+                            <xs:attribute name="GUID" use="optional"\r
+                                type="RegistryFormatGuid"/>\r
+                            <xs:attribute name="SupArchList" type="ArchListType"\r
+                                use="optional"/>\r
+                            <xs:attribute name="SupModList" type="ModuleListType"\r
+                                use="optional"/>\r
+                            <xs:attribute name="FeatureFlag" type="xs:normalizedString"\r
+                                use="optional"/>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          This section contains information\r
+                          about how the module was coded, such as Compiler Tools, Flags, PCDs\r
+                          (only PatchPcd and/or PcdEx) and Library Class Instances used to\r
+                          build the binary.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:complexType>\r
+                        <xs:sequence>\r
+\r
+                          <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                The element is the\r
+                                Patchable PCD Value that was used during the build.\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element minOccurs="1" maxOccurs="1"\r
+                                name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="PcdCName"\r
+                                type="xs:NCName"/>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      The minLength of 3 is\r
+                                      required to handle the "0x" prefix to the hex number.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:simpleType>\r
+                                    <xs:restriction base="HexNumber">\r
+                                      <xs:minLength value="3"/>\r
+                                      <xs:maxLength value="10"/>\r
+                                    </xs:restriction>\r
+                                  </xs:simpleType>\r
+                                </xs:element>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="DatumType"\r
+                                type="PcdDatumTypes"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      This field is required\r
+                                      if the Pcd Datum Type is VOID*\r
+                                    </xs:documentation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      The minLength of 3 is\r
+                                      required to handle the "0x" prefix to the hex number.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:simpleType>\r
+                                    <xs:restriction base="HexNumber">\r
+                                      <xs:minLength value="3"/>\r
+                                    </xs:restriction>\r
+                                  </xs:simpleType>\r
+                                </xs:element>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="Value"\r
+                                type="xs:normalizedString"/>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="Offset">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      The minLength of 3 is\r
+                                      required to handle the "0x" prefix to the hex number.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:simpleType>\r
+                                    <xs:restriction base="HexNumber">\r
+                                      <xs:minLength value="3"/>\r
+                                    </xs:restriction>\r
+                                  </xs:simpleType>\r
+                                </xs:element>\r
+                                <xs:element ref="HelpText" minOccurs="0"\r
+                                maxOccurs="unbounded"/>\r
+                                <xs:element minOccurs="0" maxOccurs="unbounded"\r
+                                name="PcdError">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      Error information\r
+                                      implemented by the module.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:complexType>\r
+                                    <xs:sequence>\r
+                                      <xs:choice>\r
+                                        <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">\r
+                                          <xs:complexType>\r
+                                            <xs:simpleContent>\r
+                                              <xs:extension base="xs:normalizedString">\r
+                                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                                              </xs:extension>\r
+                                            </xs:simpleContent>\r
+                                          </xs:complexType>\r
+                                        </xs:element>\r
+                                        <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>\r
+                                        <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>\r
+                                      </xs:choice>\r
+                                      <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">\r
+                                        <xs:annotation>\r
+                                          <xs:documentation xml:lang="en-us">\r
+                                            The minLength of 3 is\r
+                                            required to handle the "0x" prefix to the hex number.\r
+                                          </xs:documentation>\r
+                                        </xs:annotation>\r
+                                        <xs:simpleType>\r
+                                          <xs:restriction base="HexNumber">\r
+                                            <xs:minLength value="3"/>\r
+                                          </xs:restriction>\r
+                                        </xs:simpleType>\r
+                                      </xs:element>\r
+                                      <xs:element minOccurs="0" maxOccurs="unbounded"\r
+                                      name="ErrorMessage">\r
+                                        <xs:complexType>\r
+                                          <xs:simpleContent>\r
+                                            <xs:extension base="xs:string">\r
+                                              <xs:attribute name="Lang" type="xs:language" default="en-us"\r
+                                              use="optional"/>\r
+                                            </xs:extension>\r
+                                          </xs:simpleContent>\r
+                                        </xs:complexType>\r
+                                      </xs:element>\r
+                                    </xs:sequence>\r
+                                  </xs:complexType>\r
+                                </xs:element>\r
+                              </xs:sequence>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+\r
+                          <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                The element is the\r
+                                DynamicEx PCD Value that was used during the build.\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element minOccurs="1" maxOccurs="1"\r
+                                name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      The minLength of 3 is\r
+                                      required to handle the "0x" prefix to the hex number.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:simpleType>\r
+                                    <xs:restriction base="HexNumber">\r
+                                      <xs:minLength value="3"/>\r
+                                      <xs:maxLength value="10"/>\r
+                                    </xs:restriction>\r
+                                  </xs:simpleType>\r
+                                </xs:element>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="DatumType"\r
+                                type="PcdDatumTypes"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      This field is required\r
+                                      if the Pcd Datum Type is VOID*\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:simpleType>\r
+                                    <xs:restriction base="HexNumber">\r
+                                      <xs:minLength value="3"/>\r
+                                    </xs:restriction>\r
+                                  </xs:simpleType>\r
+                                </xs:element>\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="Value"\r
+                                type="xs:normalizedString"/>\r
+                                <xs:element ref="HelpText" minOccurs="0"\r
+                                maxOccurs="unbounded"/>\r
+                                <xs:element minOccurs="0" maxOccurs="unbounded"\r
+                                name="PcdError">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      Error information\r
+                                      implemented by the module.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:complexType>\r
+                                    <xs:sequence>\r
+                                      <xs:choice>\r
+                                        <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">\r
+                                          <xs:complexType>\r
+                                            <xs:simpleContent>\r
+                                              <xs:extension base="xs:normalizedString">\r
+                                                <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                                              </xs:extension>\r
+                                            </xs:simpleContent>\r
+                                          </xs:complexType>\r
+                                        </xs:element>\r
+                                        <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>\r
+                                        <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>\r
+                                      </xs:choice>\r
+                                      <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">\r
+                                        <xs:annotation>\r
+                                          <xs:documentation xml:lang="en-us">\r
+                                            The minLength of 3 is\r
+                                            required to handle the "0x" prefix to the hex number.\r
+                                          </xs:documentation>\r
+                                        </xs:annotation>\r
+                                        <xs:simpleType>\r
+                                          <xs:restriction base="HexNumber">\r
+                                            <xs:minLength value="3"/>\r
+                                          </xs:restriction>\r
+                                        </xs:simpleType>\r
+                                      </xs:element>\r
+                                      <xs:element minOccurs="0" maxOccurs="unbounded"\r
+                                      name="ErrorMessage">\r
+                                        <xs:complexType>\r
+                                          <xs:simpleContent>\r
+                                            <xs:extension base="xs:string">\r
+                                              <xs:attribute name="Lang" type="xs:language" default="en-us"\r
+                                              use="optional"/>\r
+                                            </xs:extension>\r
+                                          </xs:simpleContent>\r
+                                        </xs:complexType>\r
+                                      </xs:element>\r
+                                    </xs:sequence>\r
+                                  </xs:complexType>\r
+                                </xs:element>\r
+                              </xs:sequence>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+\r
+                          <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances">\r
+                            <xs:annotation>\r
+                              <xs:documentation xml:lang="en-us">\r
+                                This is the actual\r
+                                library instance that was used to link against the module.\r
+                              </xs:documentation>\r
+                            </xs:annotation>\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID">\r
+                                  <xs:annotation>\r
+                                    <xs:documentation xml:lang="en-us">\r
+                                      This GUID and the\r
+                                      Version attribute uniquely identify the actual Library\r
+                                      Instance linked in this module.\r
+                                    </xs:documentation>\r
+                                  </xs:annotation>\r
+                                  <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                      <xs:extension base="RegistryFormatGuid">\r
+                                        <xs:attribute name="Version" type="xs:decimal"\r
+                                        use="required">\r
+                                          <xs:annotation>\r
+                                            <xs:documentation xml:lang="en-us">\r
+                                              This value, along with\r
+                                              the GUID, is used to uniquely identify this object.\r
+                                            </xs:documentation>\r
+                                          </xs:annotation>\r
+                                        </xs:attribute>\r
+                                      </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                  </xs:complexType>\r
+                                </xs:element>\r
+                              </xs:sequence>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+\r
+                          <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags">\r
+                            <xs:complexType mixed="true">\r
+                              <xs:simpleContent>\r
+                                <xs:annotation>\r
+                                  <xs:documentation xml:lang="en-us">\r
+                                    Any description of OS,\r
+                                    Tool, and flags for the individual tool can go in this\r
+                                    section.\r
+                                  </xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:extension base="xs:string">\r
+                                  <xs:anyAttribute processContents="lax"/>\r
+                                </xs:extension>\r
+                              </xs:simpleContent>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <!-- End of AsBuilt -->\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of BinaryFiles Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base="xs:string">\r
+                            <xs:attribute name="Lang" type="xs:language" default="en-us"\r
+                                use="optional"/>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="GUID">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us">\r
+                          This GUID and the Version attribute\r
+                          uniquely identify Package that this Module depends on.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base="RegistryFormatGuid">\r
+                            <xs:attribute name="Version" type="xs:decimal" use="optional">\r
+                              <xs:annotation>\r
+                                <xs:documentation xml:lang="en-us">\r
+                                  This value, along with\r
+                                  the GUID, is used to uniquely identify this object. If the\r
+                                  version attribute is not specified, the most recent version\r
+                                  of the package can be used.\r
+                                </xs:documentation>\r
+                              </xs:annotation>\r
+                            </xs:attribute>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PackageDependencies -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Guids">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="VariableName"\r
+                        type="xs:normalizedString">\r
+                      <xs:annotation>\r
+                        <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation>\r
+                        <xs:documentation>\r
+                          This can be either a Hex Array or C string in unicode\r
+                          format: L"string" Data.\r
+                        </xs:documentation>\r
+                      </xs:annotation>\r
+                    </xs:element>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module does not install\r
+                              the GUID, and the GUID must be present for the module to\r
+                              execute.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module does not install\r
+                              the GUID, however, the GUID will be used if it is present.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The module always installs\r
+                              the GUID.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="SOMETIMES_PRODUCES">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The Module will install the\r
+                              GUID under certain execution paths.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                        <xs:enumeration value="UNDEFINED">\r
+                          <xs:annotation>\r
+                            <xs:documentation xml:lang="en-us">\r
+                              The package creator knows\r
+                              that a GUID is used, but does not know how it is used.\r
+                            </xs:documentation>\r
+                          </xs:annotation>\r
+                        </xs:enumeration>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="GuidType" type="GuidListType" use="required"/>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of Guids Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Protocols">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A listing of protocols required or produced by this module.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="PRODUCES"/>\r
+                        <xs:enumeration value="SOMETIMES_PRODUCES"/>\r
+                        <xs:enumeration value="CONSUMES"/>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
+                        <xs:enumeration value="TO_START"/>\r
+                        <xs:enumeration value="BY_START"/>\r
+                        <xs:enumeration value="UNDEFINED"/>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="Notify" type="xs:boolean" use="optional"/>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of Protocols Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PPIs">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              A listing of PPIs required or produced by this module.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="Usage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="PRODUCES"/>\r
+                        <xs:enumeration value="SOMETIMES_PRODUCES"/>\r
+                        <xs:enumeration value="CONSUMES"/>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
+                        <xs:enumeration value="UNDEFINED"/>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+                  </xs:attribute>\r
+                  <xs:attribute name="Notify" type="xs:boolean" use="optional"/>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PPIs Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Externs">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              These elements specify additional information about the\r
+              module. This area may be used by tools to generate code.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:choice minOccurs="1">\r
+                      <xs:sequence>\r
+                        <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint"\r
+                            type="xs:NCName"/>\r
+                        <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage"\r
+                            type="xs:NCName"/>\r
+                      </xs:sequence>\r
+                      <xs:sequence>\r
+                        <xs:element minOccurs="0" maxOccurs="1" name="Constructor"\r
+                            type="xs:NCName"/>\r
+                        <xs:element minOccurs="0" maxOccurs="1" name="Destructor"\r
+                            type="xs:NCName"/>\r
+                      </xs:sequence>\r
+                    </xs:choice>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of Externs Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section describes how a platform is coded with respect\r
+              to the platform configuration knobs.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName"\r
+                        type="xs:NCName"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"\r
+                        type="xs:normalizedString"/>\r
+                    <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>\r
+                  </xs:sequence>\r
+                  <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
+                  <xs:attribute name="PcdUsage" use="required">\r
+                    <xs:simpleType>\r
+                      <xs:restriction base="xs:NCName">\r
+                        <xs:enumeration value="PRODUCES"/>\r
+                        <xs:enumeration value="SOMETIMES_PRODUCES"/>\r
+                        <xs:enumeration value="CONSUMES"/>\r
+                        <xs:enumeration value="SOMETIMES_CONSUMES"/>\r
+                        <xs:enumeration value="UNDEFINED"/>\r
+                      </xs:restriction>\r
+                    </xs:simpleType>\r
+\r
+\r
+                  </xs:attribute>\r
+                  <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+                  <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+                  <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PcdCoded Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This is the PEI dependency expression for a Dependency\r
+              Section.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    An in-fix expression, of C identifiers and TRUE,\r
+                    FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix\r
+                    notation. The operators are restricted to grammar defined in the PI\r
+                    specification.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
+            </xs:sequence>\r
+            <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+            <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+            <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of PeiDepex Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This is the DXE dependency expression for a Dependency\r
+              Section.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    An in-fix expression, of C identifiers and TRUE,\r
+                    FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix\r
+                    notation. The operators are restricted to grammar defined in the PI\r
+                    specification.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
+            </xs:sequence>\r
+            <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+            <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+            <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of DxeDepex Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This is the SMM dependency expression for a Dependency\r
+              Section.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    An in-fix expression, of C identifiers and TRUE,\r
+                    FALSE, AND, OR, NOT, BEFORE, and AFTER as well as parenthesis () in the in-fix\r
+                    notation. The operators are restricted to grammar defined in the PI\r
+                    specification.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>\r
+            </xs:sequence>\r
+            <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+            <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+            <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of SmmDepex Section -->\r
+\r
+\r
+        <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is used to provide comments and/or list\r
+              auxiliary files, such as pdb or map files.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is the path and filename location within\r
+                    the ZIP file.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:anyURI">\r
+                      <xs:attribute name="Executable" type="xs:boolean" default="false"\r
+                          use="optional">\r
+                        <xs:annotation>\r
+                          <xs:documentation xml:lang="en-us">\r
+                            If true, used by installation\r
+                            tools to ensure that a file that must be executable has the\r
+                            correct properties to permit execution.\r
+                          </xs:documentation>\r
+                        </xs:annotation>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of Module Surface Area Misc Section -->\r
+\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This section is used for any processing instructions that\r
+              may be custom to the content provided by the distribution that are common to module.\r
+            </xs:documentation>\r
+            <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>\r
+            <xs:documentation xml:lang="en-us">\r
+              The content can be plain text as well as any user-defined,\r
+              properly formatted XML structure.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType mixed="true">\r
+            <xs:attribute name="UserId" type="xs:NCName" use="required">\r
+              <xs:annotation>\r
+                <xs:documentation xml:lang="en-us">\r
+                  This is a single word identifier for grouping\r
+                  similar content. For example, ReferenceBuild might be used to identify non-PI\r
+                  compliant build steps, with two different UserExtensions sections, one with an\r
+                  Identifier of Prebuild, and another of PostBuild. Both UserExtensions sections would\r
+                  use the same UserId.\r
+                </xs:documentation>\r
+              </xs:annotation>\r
+            </xs:attribute>\r
+            <xs:attribute name="Identifier" type="xs:string" use="required">\r
+              <xs:annotation>\r
+                <xs:documentation xml:lang="en-us">\r
+                  This can be any string used to differentiate or\r
+                  identify this section from other UserExtensions sections.\r
+                </xs:documentation>\r
+                <xs:documentation xml:lang="en-us">\r
+                  For example, a PRE_PROCESS Identifier might indicate\r
+                  specific steps and tools required before processing module content, while a\r
+                  different UserExtensions section with a POST_PROCESS Identifier might describe steps\r
+                  that need to be executed after operations on this module.\r
+                </xs:documentation>\r
+              </xs:annotation>\r
+            </xs:attribute>\r
+            <xs:anyAttribute processContents="lax"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- End of Module Surface Area UserExtensions Section -->\r
+\r
+      </xs:sequence>\r
+      <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This attribute is used when the binaries are distributed for\r
+            this module and no code generation from source files is required. If set, then the BinaryFiles\r
+            section should be used, and any files listed in the SourceFiles section do not have to be built.\r
+            Additionally, the AsBuilt section for each binary file must be included.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:attribute>\r
+    </xs:complexType>\r
+\r
+  </xs:element>\r
+  <!-- End of the ModuleSurfaceArea element. -->\r
+\r
+  <xs:element name="Tools">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Header">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is the User Interface Name for this Tools\r
+                    Distribution.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the Copyright is\r
+                    different from the Distribution Package copyright.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the License is\r
+                    different from the Distribution Package license.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Abstract">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the Abstract is\r
+                    different from the Distribution Package Abstract.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:normalizedString">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Description">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the Description is\r
+                    different from the Distribution Package Description.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This is the path and filename location within the ZIP file.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:anyURI">\r
+                <xs:attribute name="OS" type="SupportedOs" use="optional">\r
+                  <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us">\r
+                      This is required for tools that execute; it\r
+                      should not be used for configuration files.\r
+                    </xs:documentation>\r
+                  </xs:annotation>\r
+                </xs:attribute>\r
+                <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">\r
+                  <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us">\r
+                      If true, used by installation tools to\r
+                      ensure that a file that must be executable has the correct properties to\r
+                      permit execution.\r
+                    </xs:documentation>\r
+                  </xs:annotation>\r
+                </xs:attribute>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- End of the Tools element. -->\r
+\r
+  <xs:element name="MiscellaneousFiles">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        This section contains a list of files that are not part of the code\r
+        distributed with modules, packages or tools.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Header">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    The User interface name for this content.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the Copyright is\r
+                    different from the Distribution Package Copyright.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en-us">\r
+                    This is only required if the License is\r
+                    different from the Distribution Package License.\r
+                  </xs:documentation>\r
+                </xs:annotation>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:string">\r
+                      <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"\r
+                                            />\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en-us">\r
+              This is the path and filename location within the ZIP file.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="xs:anyURI">\r
+                <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">\r
+                  <xs:annotation>\r
+                    <xs:documentation xml:lang="en-us">\r
+                      If true, used by installation tools to\r
+                      ensure that a file that must be executable has the correct properties to\r
+                      permit execution.\r
+                    </xs:documentation>\r
+                  </xs:annotation>\r
+                </xs:attribute>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- End of the Misc element. -->\r
+\r
+  <xs:element name="UserExtensions">\r
+    <xs:complexType mixed="true">\r
+      <xs:sequence>\r
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
+      </xs:sequence>\r
+      <xs:attribute name="UserId" type="xs:NCName" use="required">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This is a single word identifier for grouping similar content.\r
+            For example, ReferenceBuild might be used to identify non-PI compliant build steps, with two\r
+            different UserExtensions sections, one with an Identifier of Prebuild, and another of PostBuild.\r
+            Both UserExtensions sections would use the same UserId.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:attribute>\r
+      <xs:attribute name="Identifier" type="xs:string" use="optional">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This can be any string used to differentiate or identify this\r
+            section from other UserExtensions sections.\r
+          </xs:documentation>\r
+          <xs:documentation xml:lang="en-us">\r
+            For example, a PRE_PROCESS Identifier might indicate specific\r
+            steps and tools required before processing distribution package content, while a different\r
+            UserExtensions section with a POST_PROCESS Identifier might describe steps that need to be\r
+            executed after operations on this content.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:attribute>\r
+      <xs:anyAttribute processContents="lax"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- The following elements are common definitions used with the ref attribute for elements. -->\r
+\r
+  <xs:element name="HelpText">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="xs:string">\r
+          <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+\r
+  <!-- The following attribute groups are used in various elements above. -->\r
+\r
+  <xs:attributeGroup name="SupportedArchMod">\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+\r
+  <!-- The following data types are used to restrict content. -->\r
+\r
+  <xs:simpleType name="ArchListType">\r
+    <xs:list itemType="ArchTypes"/>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="ArchTypes">\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:enumeration value="IA32"/>\r
+      <xs:enumeration value="X64"/>\r
+      <xs:enumeration value="IPF"/>\r
+      <xs:enumeration value="EBC"/>\r
+      <xs:enumeration value="ARM"/>\r
+      <xs:pattern value="([A-Z])([a-zA-Z0-9])*">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            Any processor architecture not listed above. The Architecture\r
+            must be a target architecture of one or more compiler tool chains.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:pattern>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+\r
+  <xs:simpleType name="FamilyTypes">\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:enumeration value="MSFT"/>\r
+      <xs:enumeration value="GCC"/>\r
+      <xs:pattern value="[A-Z][a-zA-Z0-9]*">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            Any other family of build utilities for which compiler tools\r
+            exist.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:pattern>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="GuidListType">\r
+    <xs:list itemType="GuidTypes"/>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="GuidTypes">\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:enumeration value="Event"/>\r
+      <xs:enumeration value="File"/>\r
+      <xs:enumeration value="FV"/>\r
+      <xs:enumeration value="GUID"/>\r
+      <xs:enumeration value="HII"/>\r
+      <xs:enumeration value="Hii"/>\r
+      <xs:enumeration value="HOB"/>\r
+      <xs:enumeration value="SystemTable"/>\r
+      <xs:enumeration value="TokenSpaceGuid"/>\r
+      <xs:enumeration value="Variable"/>\r
+      <xs:enumeration value="UNDEFINED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="HexNumber">\r
+    <xs:restriction base="xs:hexBinary">\r
+      <xs:pattern value="0x([a-fA-F0-9])+"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="Md5Sum">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:pattern value="[a-zA-Z0-9]{32}"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="ModuleListType">\r
+    <xs:list itemType="ModuleTypes"/>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="ModuleTypes">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation>\r
+      <xs:documentation xml:lang="en-us">\r
+        Module types for components and libraries defined for this distribution\r
+        mechanism.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:enumeration value="BASE ">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="DXE_CORE">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to the DXE core.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="DXE_DRIVER">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to a DXE driver.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="DXE_RUNTIME_DRIVER">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to a DXE runtime driver.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="DXE_SAL_DRIVER">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to an IPF DXE runtime driver.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="DXE_SMM_DRIVER">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to a DXE SMM driver.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="PEI_CORE">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to the PEI core.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="PEIM">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="SEC">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to Security phase.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="UEFI_DRIVER">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="UEFI_RUNTIME_DRIVER">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only valid for UEFI runtime\r
+            drivers.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="UEFI_APPLICATION">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only valid for UEFI applications.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="SMM_CORE">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This module is only applicable to the SMM\r
+            core.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="USER_DEFINED">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This content is restricted to a specific implementation.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="UNDEFINED">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This enumeration is for use in a list that where the package\r
+            creator does not know the what module types are supported by a module.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:pattern value="([A-Z])([a-zA-Z0-9])*">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This pattern has been added for use in a module lists - for\r
+            future expansion.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:pattern>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="PcdDatumTypes">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        The following data types are defined by the PCD specification (or PCD\r
+        section of the UEFI/PI specifications.)\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:enumeration value="UINT8"/>\r
+      <xs:enumeration value="UINT16"/>\r
+      <xs:enumeration value="UINT32"/>\r
+      <xs:enumeration value="UINT64"/>\r
+      <xs:enumeration value="BOOLEAN"/>\r
+      <xs:enumeration value="VOID*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="PcdItemListType">\r
+    <xs:list itemType="PcdItemTypes"/>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="PcdItemTypes">\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:enumeration value="FeaturePcd">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            The Feature PCD is a binary, evaluating to either true or false.\r
+            This is used during build to include/exclude content. It can also be used during execution to\r
+            force execution paths within drivers, or to enable/disable features within a driver for a given\r
+            platform.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="FixedPcd">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            The Fixed PCD is a #define value that is set at build time.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="PatchPcd">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            The Patch PCD is a #define that is set at build time, and that\r
+            can be modified within a binary file. Additional information, such as the offset location of the\r
+            value, along with its length may need to be provided.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="Pcd">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            This PCD type has an overloaded definition. Prior to build, the\r
+            platform integrator may choose to implement a PCD as Fixed, Patchable or a Dynamic PCD. If the\r
+            platform integrator choose to use the PCD as dynamic, then a PCD driver is required in the\r
+            platform (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. For Dynamic\r
+            PCDs, the PcdGet* must pass in the token space guid and the token number to retrieve data\r
+            (PcdSet* also needs these values.)\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="PcdEx">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            The PCD can only be used as Dynamic, and the platform firmware\r
+            must contain a driver to maintain a 'database' of these items. For Dynamic PCDs, the PcdGet*\r
+            must pass in the token space guid and the token number to retrieve data (PcdSet* also needs\r
+            these values.)\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="RegistryFormatGuid">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        A GUID must contain five different Hexadecimal character sets that are\r
+        separated by a dash (-) character.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+  <xs:simpleType name="SupportedOs">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en-us">\r
+        The EDK II build system supports workstations running one of the\r
+        following supported operating systems. This is the OS for the developer's workstation, not the target\r
+        platform.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:enumeration value="Win32">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            For Windows 2003, Windows XP and Windows Vista.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="Win64">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            For Windows 2003, Windows XP and Windows Vista.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="RedHat32"/>\r
+      <xs:enumeration value="RedHat64"/>\r
+      <xs:enumeration value="SuSE32"/>\r
+      <xs:enumeration value="SuSE64"/>\r
+      <xs:enumeration value="Linux32"/>\r
+      <xs:enumeration value="Linux64"/>\r
+      <xs:enumeration value="OS/X32"/>\r
+      <xs:enumeration value="OS/X64"/>\r
+      <xs:enumeration value="Generic"/>\r
+      <xs:enumeration value="GenericWin">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            Typically, this is used for Windows Batch files.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:enumeration value="GenericNix">\r
+        <xs:annotation>\r
+          <xs:documentation xml:lang="en-us">\r
+            Typically use for shell scripts - valid for any Linux and Mac\r
+            OS/X.\r
+          </xs:documentation>\r
+        </xs:annotation>\r
+      </xs:enumeration>\r
+      <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+\r
+</xs:schema>\r