<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY SELF "RFCthis">
]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-report-16" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SUIT Reports">Secure Reporting of SUIT Update Status</title>

    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>brendan.moran.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>

    <date year="2025" month="October" day="20"/>

    <area>Security</area>
    <workgroup>SUIT</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 62?>

<t>The Software Update for the Internet of Things (SUIT) manifest provides
a way for many different update and boot
workflows to be described by a common format.
This specification describes a lightweight feedback mechanism that
allows a developer in possession of a manifest to reconstruct the
decisions made and actions performed by a manifest processor.</t>



    </abstract>



  </front>

  <middle>


<?line 71?>

<section anchor="introduction"><name>Introduction</name>

<t>This specification describes a SUIT-specific
logging container that creates a lightweight feedback mechanism for
developers in the event that an update or boot fails in the manifest
processor. In this way, it provides the necessary link between the
Status Tracker Client and the Status Tracker Server as defined in
<xref target="RFC9019"/>, Section 2.3.</t>

<t>A SUIT Manifest Processor can fail to install or boot an update for many
reasons. Frequently, the error codes generated by such systems fail to
provide developers with enough information to find root causes and
produce corrective actions, resulting in extra effort to reproduce
failures. Logging the results of each SUIT command can simplify this
process.</t>

<t>While it is possible to report the results of SUIT commands through
existing logging or attestation mechanisms, this comes with several
drawbacks:</t>

<t><list style="symbols">
  <t>data inflation, particularly when designed for text-based logging</t>
  <t>missing information elements</t>
  <t>missing support for multiple components</t>
</list></t>

<t>The CBOR objects defined in this document allow devices to:</t>

<t><list style="symbols">
  <t>report a trace of how an update was performed</t>
  <t>report expected vs. actual values for critical checks</t>
  <t>describe the installation of complex multi-component architectures</t>
  <t>describe the measured properties of a system</t>
  <t>report the exact reason for a parsing failure</t>
</list></t>

</section>
<section anchor="terminology"><name>Conventions and Terminology</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>The terms "Author", "Recipient", and "Manifest" are defined in Section 2 of
<xref target="I-D.ietf-suit-manifest"></xref>.</t>

<t>Additionally, this specification uses the term
Boot: initialization of an executable image. Although this
specification refers to boot, any boot-specific operations described
are equally applicable to starting an executable in an OS context.</t>

</section>
<section anchor="suit-record"><name>The SUIT_Record</name>

<t>The SUIT_Record is a record of a decision taken by the Manifest Processor.
It contains the information that the Manifest Processor used to make the
decision. The decision can be inferred from this information, so it is not
included.
If the developer has a copy of the
manifest, then they need little information to reconstruct what the
manifest processor has done. They need any data that influences
the control flow of the manifest. The manifest only supports the
following control flow primitives:</t>

<t><list style="symbols">
  <t>Set Component</t>
  <t>Set/Override Parameters</t>
  <t>Try-Each</t>
  <t>Run Sequence</t>
  <t>Conditions</t>
</list></t>

<t>Of these, only conditions change the behavior of the processor from the
default, and then only when the condition fails.</t>

<t>To reconstruct the flow of a manifest, a developer needs
a list of metadata about failed conditions:</t>

<t><list style="symbols">
  <t>the current manifest</t>
  <t>the current Command Sequence (<xref target="I-D.ietf-suit-manifest"/>, Section 5.3.3)</t>
  <t>the offset into the current Command Sequence</t>
  <t>the current component index</t>
  <t>the "reason" for failure</t>
</list></t>

<t>Most conditions compare a parameter to an actual value, so the "reason"
is typically the actual value.</t>

<t>Since it is possible that a non-condition command (directive) may fail in an
exceptional circumstance,
a failure code for a non condition command must be communicated to the developer. However,
a failed directive will terminate processing of the manifest. To accommodate
for a failed command and for explicit "completion," an additional "result"
element is included as well; however, this is included in the SUIT_Report (<xref target="suit-report"/>).
In the case of a command failure,
the failure reason is typically a numeric error code. However, these error
codes need to be standardised in order to be useful.</t>

<t>This approach effectively compacts the log of operations taken using the SUIT Manifest
as a dictionary. This enables a full reconstruction of the log using a matching
decompaction tool.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : SUIT_Parameters,
    $$SUIT_Record_Extensions
]
]]></sourcecode></figure>

<t>suit-record-manifest-id is used to identify which manifest contains the
command that caused the record to be generated. The manifest id is a
list of integers that form a walk of the manifest tree, starting at the
root. An empty list indicates that the command was contained in the
root manifest. If the list is not empty, the command was contained in
one of the root manifest's dependencies, or nested even further below
that.</t>

<t>For example, suppose that the root manifest has 3 dependencies
and each of those dependencies has 2 dependencies of its own:</t>

<t><list style="symbols">
  <t>Root  <list style="symbols">
      <t>Dependency A (index 0)      <list style="symbols">
          <t>Dependency AA (index 0,0)</t>
          <t>Dependency AB (index 0,1)</t>
        </list></t>
      <t>Dependency B (index 1)      <list style="symbols">
          <t>Dependency BA (index 1,0)</t>
          <t>Dependency BB (index 1,1)</t>
        </list></t>
      <t>Dependency C (index 2)      <list style="symbols">
          <t>Dependency CA (index 2,0)</t>
          <t>Dependency CB (index 2,1)</t>
        </list></t>
    </list></t>
</list></t>

<t>A suit-record-manifest-id of [1,0] would indicate that the current command was
contained within Dependency BA. Similarly, a suit-record-manifest-id of [2,1]
would indicate Dependency CB</t>

<t>suit-record-manifest-section indicates which Command Sequence of the manifest was
active. Only the "top level" Command Sequences, with entries in the Manifest are
identified by this element. These are:</t>

<t><list style="symbols">
  <t>suit-validate = 7</t>
  <t>suit-load = 8</t>
  <t>suit-invoke = 9</t>
  <t>suit-dependency-resolution  = 15</t>
  <t>suit-payload-fetch = 16</t>
  <t>suit-candidate-verification = 18</t>
  <t>suit-install = 20</t>
</list></t>

<t>This list may be extended through extensions to the SUIT_Manifest.</t>

<t>suit-record-manifest-section is used in addition to an offset so that the developer can
index into severable Command Sequences in a predictable way. The value of this
element is the value of the key that identified the Command Sequence in the
manifest.</t>

<t>suit-record-section-offset is the number of bytes into the current
Command Sequence at which the current command is located.</t>

<t>suit-record-component-index is the index of the component that was
specified at the time that the report was generated. This field is
necessary due to the availability of set-current-component values of
True and a list of components. Both of these values cause the manifest
processor to loop over commands using a series of component-ids, so the
developer needs to know which was selected when the command executed.</t>

<t>suit-record-properties contains any measured properties that led to the
command failure.
For example, this could be the actual value of a SUIT_Digest or
class identifier. This is encoded in a SUIT_Parameters block as defined
in <xref target="I-D.ietf-suit-manifest"/>, Section 8.4.8.</t>

</section>
<section anchor="suit-report"><name>The SUIT_Report</name>

<t>The SUIT_Report is a SUIT-specific logging container. It contains
the SUIT_Records needed to reconstruct the decisions made by a
Manifest Processor as well as references to the Manifest being 
processed, the result of processing, and an optional capability
report.</t>

<t>Some metadata is common to all records, such as the root manifest:
the manifest that is the entry-point for the manifest processor. This
metadata is aggregated with a list of SUIT_Records as defined in 
<xref target="suit-record"/>. The SUIT_Report
may also contain a list of any System Properties that were measured
and reported, and a reason for a failure if one occurred.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => \
        \[ * SUIT_Record / system-property-claims \],
  suit-report-result          => true / {
    suit-report-result-code   => int,
    suit-report-result-record => SUIT_Record,
    suit-report-result-reason => SUIT_Report_Reasons,
  },
  ? suit-report-capability-report => SUIT_Capability_Report,
  $$SUIT_Report_Extensions
}
system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + SUIT_Parameters,
}
]]></sourcecode></figure>

<t>The suit-reference provides a reference URI and digest for a suit
manifest. The URI <bcp14>MUST</bcp14> exactly match the suit-reference-uri
(<xref target="I-D.ietf-suit-manifest"/>, Section 8.4.3) that is provided in the
manifest. The digest is the digest of the manifest, exactly as reported in
SUIT_Authentication, element 0 (<xref target="I-D.ietf-suit-manifest"/>, Section 8.3).</t>

<t>NOTE: The digest is used
in preference to other identifiers in the manifest because it allows
a manifest to be uniquely identified (collision resistance) whereas
other identifiers, such as the sequence number, can collide,
particularly in scenarios with multiple trusted signers.</t>

<t>The following CDDL describes a SUIT_Reference.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Reference = [
    suit-report-manifest-uri  : tstr,
    suit-report-manifest-digest : SUIT_Digest,
]
]]></sourcecode></figure>

<t>suit-report-manifest-digest provides a SUIT_Digest (as defined in
<xref target="I-D.ietf-suit-manifest"/>, Section 10) that is the characteristic digest of the
Root manifest. This digest <bcp14>MUST</bcp14> be the same digest as is held in
the first element of SUIT_Authentication in the referenced
Manifest_Envelope.</t>

<t>suit-report-manifest-uri provides the reference URI that was provided in
the root manifest.</t>

<t>suit-report-nonce provides a container for freshness or replay
protection information. This field <bcp14>MAY</bcp14> be omitted where the suit-report
is authenticated within a container that provides freshness already.
For example, attestation evidence typically contains a proof of
freshness.</t>

<section anchor="suit-report-records"><name>suit-report-records</name>

<t>suit-report-records is a list of 0 or more SUIT_Records or
system-property-claims. Because SUIT_Records are only generated on failure,
in simple cases this can be an empty list. SUIT_Records and
suit-system-property-claims are merged into a single list because this
reduces the overhead for a constrained node that generates this report.
The use of a single log allows report generators to use simple
memory management. Because the system-property-claims
are encoded as maps and SUIT_Records are encoded as lists, a recipient need
only filter the CBOR Type-5 entries from suit-report-records to obtain all 
system-property-claims.</t>

<t>System Properties can be extracted from suit-report-records by filtering
suit-report-records for maps. System Properties are a list of measured
or asserted properties
of the system that creates the SUIT_Report. These properties are scoped by
component identifier. Because this list is expected to be constructed on
the fly by a constrained node, component identifiers may appear more than
once. A recipient may convert the result to a more conventional structure:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Record_System_Properties = {
  * component-id => {
    + SUIT_Parameters,
  }
}
]]></sourcecode></figure>

</section>
<section anchor="suit-report-result"><name>SUIT_Report Result</name>

<t>suit-report-result provides a mechanism to show that the SUIT procedure
completed successfully (value is true) or why it failed (value is a map
of an error code and a SUIT_Record).</t>

<t>suit-report-result-reason gives a high-level explanation of the failure.
These reasons are intended for interoperable implementations. The reasons
are divided into a small number of groups:</t>

<t><list style="symbols">
  <t>suit-report-reason-cbor-parse: a parsing error was encountered by the
CBOR parser.</t>
  <t>suit-report-reason-cose-unsupported: an unsupported COSE (<xref target="RFC9052"/>) structure or
header was encountered.</t>
  <t>suit-report-reason-alg-unsupported: an unsupported COSE algorithm was
encountered.</t>
  <t>suit-report-reason-unauthorised: Signature/MAC verification failed.</t>
  <t>suit-report-reason-command-unsupported: an unsupported command was
encountered.</t>
  <t>suit-report-reason-component-unsupported: The manifest declared a
component/prefix that does not exist.</t>
  <t>suit-report-reason-component-unauthorised: The manifest declared a
component that is not accessible by the signer.</t>
  <t>suit-report-reason-parameter-unsupported: The manifest used a
parameter that does not exist.</t>
  <t>suit-report-severing-unsupported: The manifest used severable fields
but the Manifest Processor doesn't support them.</t>
  <t>suit-report-reason-condition-failed: A condition failed with soft-
failure off.</t>
  <t>suit-report-reason-operation-failed: A command failed (e.g.,
download/copy/swap/write)</t>
</list></t>

<t>The suit-report-result-code reports an internal error code that is
provided for debugging reasons. This code is not intended for
interoperability.</t>

<t>The suit-report-result-record indicates the exact point in the manifest
or manifest dependency tree where the error occurred.</t>

<t>suit-report-capability-report provides a mechanism to report the capabilities of the Manifest Processor. The SUIT_Capability_Report is described in <xref target="capabilities"/>. The capability report is optional to include in the SUIT_Report, according to an application-specific policy. While the SUIT_Capability_Report is not expected to be very large, applications should ensure that they only report capabilities when necessary in order to conserve bandwidth. A capability report is not necessary except when:</t>

<t><list style="numbers" type="1">
  <t>A client explicitly requests the capability report, or</t>
  <t>A manifest attempts to use a capability that the Manifest Processor does not implement.</t>
</list></t>

</section>
</section>
<section anchor="attestation"><name>Attestation</name>

<t>Where Remote Attestation (see <xref target="RFC9334"/>, the RATS Architecture) is in use, the RATS Verifier (Verifier hereafter) requires a set of
Attestation Evidence. Attestation Evidence contains Evidence Claims about the Attester. These Evidence Claims
contain measurements about the Attester. Many of these measurements are the same measurements that are generated in SUIT,
which means that a SUIT_Report contains most of the Claims and some of the Endorsements that a Verifier requires.</t>

<t>Using a SUIT_Manifest and a SUIT_Report improves a Verifier's ability to 
appraise the trustworthiness of a remote device.
Remote attestation is done by using the SUIT_Envelope
along with the SUIT_Report in Evidence to reconstruct the state of the device at boot time.
Additionally, by including SUIT_Report data as telemetry (i.e., debug/failure information) next to measurements in Evidence, both types of Evidence data can be notarized via verifiable data structure, such as an append-only log (<xref section="3" sectionFormat="of" target="I-D.ietf-scitt-architecture"/>) using the same conceptual message.</t>

<t>For the SUIT_Report to be usable as Attestation Evidence, the environment that
generated the SUIT_Report also needs to be measured. Typically, this means that
the software that executes the commands in the Manifest (the Manifest
Processor) must be measured; similarly, the piece of software that assembles
the measurements, taken by the Manifest Processor, into the SUIT_Report (the
Report Generator) must also be measured. Any bootloaders or operating systems
that facilitate the running of the Manifest Processor or Report Generator also need
to be measured in order to demonstrate the integrity of the measuring environment.</t>

<t>Therefore, if a Remote Attestation format that conveys Attestation Evidence, such as an Entity Attestation Token (EAT, see <xref target="RFC9711"/>), contains a SUIT_Report, then it <bcp14>MUST</bcp14> also include an integrity measurement of the Manifest Processor, the Report Generator and any bootloader or OS environment that ran before or during the 
execution of both.</t>

<t>If Reference Values (RFC9334, Section 8.3) required by the Verifier are delivered in a SUIT_Envelope, this codifies the delivery of appraisal information to the Verifier:</t>

<t><list style="symbols">
  <t>The Firmware Distributor:
  <list style="symbols">
      <t>sends the SUIT_Envelope to the Verifier without payload or text, but with Reference Values</t>
      <t>sends the SUIT_Envelope to the Recipient without Reference Values, or text, but with payload</t>
    </list></t>
  <t>The Recipient:
  <list style="symbols">
      <t>Installs the firmware as described in the SUIT_Manifest and generates a SUIT_Report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
      <t>Boots the firmware as described in the SUIT_Manifest and creates a SUIT_Report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
    </list></t>
  <t>The Firmware Distributor sends both reports to the Verifier (separately or together)</t>
  <t>The Verifier:
  <list style="symbols">
      <t>Reconstructs the state of the device using the manifest</t>
      <t>Compares this state to the Reference Values</t>
      <t>Returns an Attestation Report to the Firmware Distributor</t>
    </list></t>
</list></t>

<t>This approach simplifies the design of the bootloader since it is able to use an append-only log. It allows a Verifier to validate this report against signed Reference Values that is provided by the firmware author, which simplifies the delivery chain of verification information to the Verifier.</t>

<t>For a Verifier to consume the SUIT_Report, it requires a copy of the
SUIT_Manifest. The Verifier then replays the SUIT_Manifest, using the
SUIT_Report to resolve whether each condition is met. It identifies each
measurement that is required by attestation policy and records this
measurement as a Claim (<xref target="RFC9711"/>, Section 4). It evaluates whether the SUIT_Report
correctly matches the SUIT_Manifest as an element of evaluating
trustworthiness. For example there are several indicators that would show
that a SUIT_Report does not match a SUIT_Manifest. If any of the following
(not an exhaustive list) occur, then the Manifest Processor that created the
report is not trustworthy:</t>

<t><list style="symbols">
  <t>Hash of SUIT_Manifest at suit-report-manifest-uri does not match suit-report-manifest-digest</t>
  <t>A SUIT_Record is issued for a SUIT_Command_Sequence that does not exist 
in the SUIT_Manifest at suit-report-manifest-uri.</t>
  <t>A SUIT_Record is identified at an offset that is not a condition and does
not have a reporting policy that would indicate a SUIT_Record is needed.</t>
</list></t>

<t>Many architectures require multiple Verifiers, for example where one Verifier
handles hardware trust, and another handles software trust, especially the
evaluation of software authenticity and freshness. Some Verifiers may not
be capable of processing a SUIT_Report and, for separation of roles, it
may be preferable to divide that responsibility. In this case, the Verifier
of the SUIT_Report should perform an Evidence Transformation
<xref target="I-D.ietf-rats-evidence-trans"/> and
produce general purpose Measurement Results Claims that can be consumed by a
downstream Verifier, for example a Verifying Relying Party, that does not
understand SUIT_Reports.</t>

</section>
<section anchor="capabilities"><name>Capability Reporting</name>

<t>Because SUIT is extensible, a manifest author must know what capabilities a device has available. To enable this, a capability report is a set of lists that define which commands, parameters, algorithms, and component IDs are supported by a manifest processor.</t>

<t>The CDDL for a SUIT_Capability_Report follows:</t>

<figure><sourcecode type="~CDDL"><![CDATA[
SUIT_Capability_Report = {
  suit-component-capabilities  => [+ SUIT_Component_Capability ]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]
]]></sourcecode></figure>

<t>A SUIT_Component_Capability is similar to a SUIT_Component_ID, with one difference: it may optionally be terminated by a CBOR 'true' which acts as a wild-card match for any component with a prefix matching the SUIT_Component_Capability leading up to the 'true.' This feature is for use with filesystem storage, key value stores, or any other arbitrary-component-id storage systems.</t>

<t>When reporting capabilities, it is <bcp14>OPTIONAL</bcp14> to report capabilities that are declared mandatory by the SUIT Manifest <xref target="I-D.ietf-suit-manifest"/>. Capabilities defined by extensions <bcp14>MUST</bcp14> be reported.</t>

<t>Additional capability reporting can be added as follows: if a manifest element does not exist in this map, it can be added by specifying the CBOR path to the manifest element in an array and using this as the key. For example SUIT_Dependencies, as described in <xref target="I-D.ietf-suit-trust-domains"/>, Section 5.2.2, could have an extension added, which was key 3 in the SUIT_Dependencies map. This capability would be reported as: [3, 3, 1] =&gt; [3], where the key consists of the key for SUIT_Manifest (3), the key for SUIT_Common (3), and the key for SUIT_Dependencies (1). Then the value indicates that this manifest processor supports the extension (3).</t>

</section>
<section anchor="eat"><name>EAT Claim</name>

<t>The Entity Attestation Token (EAT, see <xref target="RFC9711"/>) is a secure container for conveying
Attestation Evidence, such as measurements, and Attestation Results.
The SUIT_Report is a form of measurement done by the SUIT Manifest Processor as it attempts to invoke a manifest or install a manifest. As a result, the SUIT_Report can be captured in an EAT measurements type.</t>

<t>The log-based structure of the SUIT_Report is not conducive to processing by a
typical Relying Party: it contains only a list of waypoints through the SUIT
Manifest--unless system parameter records are included--and requires additional 
information (the SUIT_Manifest) to reconstruct the values that must have been
present at each test. A Verifier in posession of the SUIT_Manifest can reconstruct 
the measurements that would produce the waypoints in the SUIT_Report. The Verifier 
<bcp14>SHOULD</bcp14> convert a SUIT_Report into a more consumable version of the EAT claim by, for 
example, constructing a measurement results claim that contains the digest of a 
component, the Vendor ID and Class ID of a component, etc.</t>

</section>
<section anchor="container"><name>SUIT_Report Container</name>

<t>Transmission of the SUIT_Report <bcp14>MUST</bcp14> satisfy the requirements of <xref target="RFC9124"/>, Section 4.3.16: REQ.SEC.REPORTING.</t>

<t>Status reports from the device to any remote system <bcp14>MUST</bcp14> be performed over an authenticated, confidential channel in order to prevent modification or spoofing of the reports.</t>

<t>As a result, the SUIT_Report <bcp14>MUST</bcp14> be transported using one of the following methods:</t>

<t><list style="symbols">
  <t>As part of a larger document that provides authenticity guarantees, such as within a <spanx style="verb">measurements</spanx> claim in an Entity Attestation Token (EAT <xref target="RFC9711"/>, Section 4.2.16).</t>
  <t>As the payload of a message transmitted over a communication security protocol, such as DTLS <xref target="RFC9147"/>.</t>
  <t>Encapsulated within a secure container, such as a COSE structure. In the case of COSE, the container <bcp14>MUST</bcp14> be either a <spanx style="verb">COSE_Encrypt0</spanx> or <spanx style="verb">COSE_Sign1</spanx> structure. The SUIT_Report <bcp14>MUST</bcp14> be the sole payload, as illustrated by the CDDL fragment below.</t>
</list></t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1 \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1_Tagged \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0 \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0_Tagged \
                         .and SUIT_COSE_Profiles

SUIT_Report_COSE_Sign1_Tagged = #6.18(SUIT_Report_COSE_Sign1)
SUIT_Report_COSE_Sign1 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    signature : bstr
]
SUIT_Report_COSE_MAC0_Tagged = #6.17(SUIT_Report_COSE_MAC0)
SUIT_Report_COSE_MAC0 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    tag : bstr
]
SUIT_Report_Unprotected = SUIT_Report / SUIT_Report_COSE_Encrypt0
SUIT_Report_COSE_Encrypt0 = COSE_Encrypt0
]]></sourcecode></figure>

<t>Note that SUIT_Report_COSE_Sign1 and SUIT_Report_COSE_MAC0 <bcp14>MUST</bcp14> be combined with a SUIT_COSE_Profiles from <xref target="I-D.ietf-suit-mti"/> using the CDDL .and directive. The SUIT_Report_COSE_Encrypt0 carries a ciphertext payload that <bcp14>MUST</bcp14> contain just the ciphertext obtained by encrypting the following CDDL:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Report_plaintext = bstr .cbor SUIT_Report
]]></sourcecode></figure>

<t>SUIT_COSE_Profiles, which use AES-CTR encryption, are not integrity protected and authenticated. For this purpose, SUIT_Report_Protected defines authenticated containers with an encrypted payload.</t>

</section>
<section anchor="iana"><name>IANA Considerations</name>

<t>IANA is requested to name the overall SUIT registry group "Software Update for the Internet of Things (SUIT)".</t>

<t>IANA is requested to allocate a CBOR tag for each of:</t>

<t><list style="symbols">
  <t>SUIT_Report_Protected</t>
  <t>SUIT_Reference</t>
  <t>SUIT_Capability_Report</t>
</list></t>

<t>IANA is requested to allocate a CoAP content-format <xref target="RFC7252"/> and a media-type for SUIT_Report.</t>

<t>IANA is also requested to add the following registries to the SUIT registry group:</t>

<t><list style="symbols">
  <t>SUIT_Report Elements</t>
  <t>SUIT_Record Elements</t>
  <t>SUIT_Report Reasons</t>
  <t>SUIT_Capability_Report Elements</t>
</list></t>

<t>For each of these registries, registration policy is:</t>

<t><list style="symbols">
  <t>-256 to 255: Standards Action</t>
  <t>-65536 to 257, 256 to 65535: Specification Required</t>
  <t>-4294967296 to -65537, 65536 to 4294967295: First Come, First Served</t>
</list></t>

<section anchor="expert-review-instructions"><name>Expert Review Instructions</name>
<t>The IANA registries established in this document allow values to be added based on expert review. This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>

<t>Expert reviewers should take into consideration the following points:</t>

<t><list style="symbols">
  <t>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments. The zones tagged as private use are intended for testing purposes and closed environments; code points in other ranges should not be assigned for testing.</t>
  <t>Specifications are required for the standards track range of point assignment. Specifications should exist for all other ranges, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</t>
  <t>Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for standards track documents does not mean that a standards track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</t>
</list></t>

</section>
<section anchor="media-type-registration"><name>Media Type Registration</name>

<section anchor="applicationsuit-reportcose"><name>application/suit-report+cose</name>

<dl spacing="compact">
  <dt>Type name:</dt>
  <dd>
    <t>application</t>
  </dd>
  <dt>Subtype name:</dt>
  <dd>
    <t>suit-report+cose</t>
  </dd>
  <dt>Required parameters:</dt>
  <dd>
    <t>n/a</t>
  </dd>
  <dt>Encoding considerations:</dt>
  <dd>
    <t>binary (CBOR)</t>
  </dd>
  <dt>Security considerations:</dt>
  <dd>
    <t><xref target="seccons"/> of &SELF;</t>
  </dd>
  <dt>Interoperability considerations:</dt>
  <dd>
    <t>n/a</t>
  </dd>
  <dt>Published specification:</dt>
  <dd>
    <t>&SELF;</t>
  </dd>
  <dt>Applications that use this media type:</dt>
  <dd>
    <t>SUIT Manifest Processor, SUIT Manifest Distributor, SUIT Manifest Author, RATS Attesters, RATS Verifiers</t>
  </dd>
  <dt>Fragment identifier considerations:</dt>
  <dd>
    <t>The syntax and semantics of fragment identifiers are as specified for "application/cose".</t>
  </dd>
  <dt>Person &amp; email address to contact for further information:</dt>
  <dd>
    <t>SUIT WG mailing list (suit@ietf.org)</t>
  </dd>
  <dt>Intended usage:</dt>
  <dd>
    <t>COMMON</t>
  </dd>
  <dt>Restrictions on usage:</dt>
  <dd>
    <t>none</t>
  </dd>
  <dt>Author/Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
  <dt>Provisional registration:</dt>
  <dd>
    <t>no</t>
  </dd>
</dl>

</section>
</section>
<section anchor="coap-content-format-registration"><name>CoAP Content-Format Registration</name>

<t>IANA is requested to assign a CoAP Content-Format ID for the SUIT_Report media type in the "CoAP Content-Formats" registry, from the "IETF Review with Expert Review or IESG Approval with Expert Review" space (256..9999), within the "CoRE Parameters" registry group <xref target="RFC7252"/> <xref target="IANA.core-parameters"/>:</t>

<texttable>
      <ttcol align='left'>Content Type</ttcol>
      <ttcol align='left'>Content Coding</ttcol>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>application/suit-report+cose</c>
      <c>&#160;</c>
      <c>TBA</c>
      <c>&SELF;</c>
</texttable>

</section>
<section anchor="cbor-tag-registration"><name>CBOR Tag Registration</name>

<t>IANA is requested to allocate a tag in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably in the Specification Required range:</t>

<texttable>
      <ttcol align='left'>Tag</ttcol>
      <ttcol align='left'>Data Item</ttcol>
      <ttcol align='left'>Semantics</ttcol>
      <c>TBA</c>
      <c>array</c>
      <c>SUIT_Report_Protected</c>
      <c>TBA</c>
      <c>array</c>
      <c>SUIT_Reference</c>
      <c>TBA</c>
      <c>map</c>
      <c>SUIT_Capability_Report</c>
</texttable>

</section>
<section anchor="suitreport-elements"><name>SUIT_Report Elements</name>

<t>IANA is requested to create a new registry for SUIT_Report Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>&#160;</ttcol>
      <c>2</c>
      <c>Nonce</c>
      <c>suit-report-nonce</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>3</c>
      <c>Records</c>
      <c>suit-report-records</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>4</c>
      <c>Result</c>
      <c>suit-report-result</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>5</c>
      <c>Result Code</c>
      <c>suit-report-result-code</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>6</c>
      <c>Result Record</c>
      <c>suit-report-result-record</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>7</c>
      <c>Result Reason</c>
      <c>suit-report-result-reason</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>8</c>
      <c>Capability Report</c>
      <c>suit-report-capability-report</c>
      <c><xref target="suit-report"/></c>
      <c>&#160;</c>
      <c>99</c>
      <c>Reference</c>
      <c>SUIT_Reference</c>
      <c>suit-reference</c>
      <c><xref target="suit-report"/></c>
</texttable>

</section>
<section anchor="suitrecord-elements"><name>SUIT_Record Elements</name>

<t>IANA is requested to create a new registry for SUIT_Record Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Manifest ID</c>
      <c>suit-record-manifest-id</c>
      <c><xref target="suit-record"/></c>
      <c>1</c>
      <c>Manifest Section</c>
      <c>suit-record-manifest-section</c>
      <c><xref target="suit-record"/></c>
      <c>2</c>
      <c>Section Offset</c>
      <c>suit-record-section-offset</c>
      <c><xref target="suit-record"/></c>
      <c>3</c>
      <c>Component Index</c>
      <c>suit-record-component-index</c>
      <c><xref target="suit-record"/></c>
      <c>4</c>
      <c>Record Properties</c>
      <c>suit-record-properties</c>
      <c><xref target="suit-record"/></c>
</texttable>

</section>
<section anchor="suitreport-reasons"><name>SUIT_Report Reasons</name>

<t>IANA is requested to create a new registry for SUIT_Report Reasons.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>CDDL Label</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Result OK</c>
      <c>suit-report-reason-ok</c>
      <c><xref target="suit-report-result"/></c>
      <c>1</c>
      <c>CBOR Parse Failure</c>
      <c>suit-report-reason-cbor-parse</c>
      <c><xref target="suit-report-result"/></c>
      <c>2</c>
      <c>Unsupported COSE Structure or Header</c>
      <c>suit-report-reason-cose-unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>3</c>
      <c>Unsupported COSE Algorithm</c>
      <c>suit-report-reason-alg-unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>4</c>
      <c>Signature / MAC verification failed</c>
      <c>suit-report-reason-unauthorised</c>
      <c><xref target="suit-report-result"/></c>
      <c>5</c>
      <c>Unsupported SUIT Command</c>
      <c>suit-report-reason-command-unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>6</c>
      <c>Unsupported SUIT Component</c>
      <c>suit-report-reason-component-unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>7</c>
      <c>Unauthorized SUIT Component</c>
      <c>suit-report-reason-component-unauthorised</c>
      <c><xref target="suit-report-result"/></c>
      <c>8</c>
      <c>Unsupported SUIT Parameter</c>
      <c>suit-report-reason-parameter-unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>9</c>
      <c>Severing Unsupported</c>
      <c>suit-report-severing-unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>10</c>
      <c>Condition Failed</c>
      <c>suit-report-reason-condition-failed</c>
      <c><xref target="suit-report-result"/></c>
      <c>11</c>
      <c>Operation Failed</c>
      <c>suit-report-reason-operation-failed</c>
      <c><xref target="suit-report-result"/></c>
</texttable>

</section>
<section anchor="suit-capability-report-elements"><name> SUIT Capability Report Elements</name>

<t>IANA is requested to create a new registry for SUIT Capability Report Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>&#160;</ttcol>
      <c>1</c>
      <c>Components</c>
      <c>suit-component-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>2</c>
      <c>Commands</c>
      <c>suit-command-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>3</c>
      <c>Parameters</c>
      <c>suit-parameters-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>4</c>
      <c>Cryptographic Algorithms</c>
      <c>suit-crypt-algo-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>5</c>
      <c>Envelope Elements</c>
      <c>suit-envelope-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>6</c>
      <c>Manifest Elements</c>
      <c>suit-manifest-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>7</c>
      <c>Common Elements</c>
      <c>suit-common-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>8</c>
      <c>Text Elements</c>
      <c>suit-text-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>9</c>
      <c>Component Text Elements</c>
      <c>suit-text-component-capabilities</c>
      <c><xref target="capabilities"/></c>
      <c>10</c>
      <c>Dependency Capabilities</c>
      <c>suit-dependency-capabilities</c>
      <c><xref target="capabilities"/></c>
</texttable>

</section>
</section>
<section anchor="seccons"><name>Security Considerations</name>

<t>The SUIT_Report serves four primary security objectives:</t>

<t><list style="symbols">
  <t>Validated Identity</t>
  <t>Integrity</t>
  <t>Replay protection</t>
  <t>Confidentiality</t>
</list></t>

<t>The mechanisms for achieving these protections are outlined in <xref target="container"/>.</t>

<t>Ideally, a SUIT_Report <bcp14>SHOULD</bcp14> be conveyed as part of a remote attestation procedure,
such as embeding it in EAT tokens that represent RATS conceptual messages. This approach ensures that the SUIT_Report
is cryptographically bound to the environment (hardware, software, or both) in
which it was generated, thereby strengthening its authenticity.</t>

<t>A SUIT_Report may disclose sensitive information about the device on which it
were produced. In such cases, the SUIT_Report <bcp14>MUST</bcp14> be encrypted, as specified in
<xref target="container"/>.</t>

<t>Furthermore, failure reports, particularly those involving cryptographic operations,
can unintentionally reveal insights into system weaknesses or vulnerabilities. As such,
SUIT_Reports <bcp14>SHOULD</bcp14> be encrypted whenever possible, to minimize the risk of information
leakage.</t>

<t>In addition to these core security requirements, operational considerations must be taken
into account. When a SUIT_Report is included within another protocol message (e.g., inside
an encrypted EAT), care must be taken to avoid inadvertently leaking information and
to uphold the principle of least privilege. For example, in many EAT-based remote attestation flows,
the Verifier may not require the full SUIT_Report. Similarly, the Relying Party might not
need access to it either.</t>

<t>To support least-privilege access, the SUIT_Report should be independently encrypted, even
when the transport or enclosing token is also encrypted. This layered encryption ensures that
only authorized entities can access the contents of the SUIT_Report.</t>

<t>In other scenarios, the EAT Verifier might require full access to a SUIT_Report.
For example, the SUIT_Report must be accessible in its entirety for the EAT Verifier
to extract or convert the SUIT_Report content into specific EAT claims, such as <spanx style="verb">measres</spanx>
(Measurement Results). A typical case
involves translating a successful <spanx style="verb">suit-condition-image</spanx> check into a digest-based claim within
the EAT.</t>

<t>When applying cryptographic protection to the SUIT_Report, the same algorithm profile used for
the corresponding SUIT manifest <bcp14>SHOULD</bcp14> be reused. The available algorithm profiles are detailed
in <xref target="I-D.ietf-suit-mti"/>. If using the same profile is not feasible (e.g., due to constraints
imposed by <spanx style="verb">suit-sha256-hsslms-a256kw-a256ctr</spanx>), then a profile offering comparable security
strength <bcp14>SHOULD</bcp14> be selected—for instance, <spanx style="verb">suit-sha256-esp256-ecdh-a128ctr</spanx>.</t>

<t>In exceptional cases, if no suitable profile can be applied, the necessity of disabling a SUIT_Report functionality altogether might arise.</t>

<t>SUIT_Reports may expose information about the user to the Verifier, Firmware Distributor, or Manifest Author. Implementors <bcp14>MUST</bcp14> carefully consider user consent in the reporting system.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Dave Thaler for his feedback.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="I-D.ietf-suit-manifest">
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
         <organization>Inria</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day="28" month="May" year="2025"/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an Internet of Things (IoT) device), where to find
   the code/data, the devices to which it applies, and cryptographic
   information protecting the manifest.  Software updates and Trusted
   Invocation both tend to use sequences of common operations, so the
   manifest encodes those sequences of operations, rather than declaring
   the metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-34"/>
   
</reference>
<reference anchor="RFC9019">
  <front>
    <title>A Firmware Update Architecture for Internet of Things</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="D. Brown" initials="D." surname="Brown"/>
    <author fullname="M. Meriac" initials="M." surname="Meriac"/>
    <date month="April" year="2021"/>
    <abstract>
      <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
      <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9019"/>
  <seriesInfo name="DOI" value="10.17487/RFC9019"/>
</reference>
<reference anchor="RFC9052">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="96"/>
  <seriesInfo name="RFC" value="9052"/>
  <seriesInfo name="DOI" value="10.17487/RFC9052"/>
</reference>
<reference anchor="RFC9711">
  <front>
    <title>The Entity Attestation Token (EAT)</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
    <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
    <author fullname="C. Wallace" initials="C." surname="Wallace"/>
    <date month="April" year="2025"/>
    <abstract>
      <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
      <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9711"/>
  <seriesInfo name="DOI" value="10.17487/RFC9711"/>
</reference>
<reference anchor="RFC8610">
  <front>
    <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="C. Vigano" initials="C." surname="Vigano"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2019"/>
    <abstract>
      <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8610"/>
  <seriesInfo name="DOI" value="10.17487/RFC8610"/>
</reference>
<reference anchor="RFC8792">
  <front>
    <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <author fullname="Q. Wu" initials="Q." surname="Wu"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8792"/>
  <seriesInfo name="DOI" value="10.17487/RFC8792"/>
</reference>
<reference anchor="RFC9334">
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="N. Smith" initials="N." surname="Smith"/>
    <author fullname="W. Pan" initials="W." surname="Pan"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9334"/>
  <seriesInfo name="DOI" value="10.17487/RFC9334"/>
</reference>

<reference anchor="I-D.ietf-suit-mti">
   <front>
      <title>Cryptographic Algorithms for Internet of Things (IoT) Devices</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <author fullname="Akira Tsukamoto" initials="A." surname="Tsukamoto">
         <organization>Openchip &amp; Software Technologies, S.L.</organization>
      </author>
      <date day="22" month="July" year="2025"/>
      <abstract>
	 <t>   The SUIT manifest, as defined in &quot;A Manifest Information Model for
   Firmware Updates in Internet of Things (IoT) Devices&quot; (RFC 9124),
   provides a flexible and extensible format for describing how firmware
   and software updates are to be fetched, verified, decrypted, and
   installed on resource-constrained devices.  To ensure the security of
   these update processes, the manifest relies on cryptographic
   algorithms for functions such as digital signature verification,
   integrity checking, and confidentiality.

   This document defines cryptographic algorithm profiles for use with
   the Software Updates for Internet of Things (SUIT) manifest.  These
   profiles specify sets of algorithms to promote interoperability
   across implementations.

   Given the diversity of IoT deployments and the evolving cryptographic
   landscape, algorithm agility is essential.  This document groups
   algorithms into named profiles to accommodate varying levels of
   device capabilities and security requirements.  These profiles
   support the use cases laid out in the SUIT architecture, published in
   &quot;A Firmware Update Architecture for Internet of Things&quot; (RFC 9019).

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-mti-23"/>
   
</reference>

<reference anchor="I-D.ietf-suit-trust-domains">
   <front>
      <title>Software Update for the Internet of Things (SUIT) Manifest Extensions for Multiple Trust Domain</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Ken Takayama" initials="K." surname="Takayama">
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day="22" month="July" year="2025"/>
      <abstract>
	 <t>   A device has more than one trust domain when it enables delegation of
   different rights to mutually distrusting entities for use for
   different purposes or Components in the context of firmware or
   software update.  This specification describes extensions to the
   Software Update for the Internet of Things (SUIT) Manifest format for
   use in deployments with multiple trust domains.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-trust-domains-12"/>
   
</reference>
<reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
  <front>
    <title>Concise Binary Object Representation (CBOR) Tags</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
  <front>
    <title>Constrained RESTful Environments (CoRE) Parameters</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.ietf-scitt-architecture">
   <front>
      <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Cedric Fournet" initials="C." surname="Fournet">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>ARM</organization>
      </author>
      <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
      <date day="10" month="October" year="2025"/>
      <abstract>
	 <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
   
</reference>

<reference anchor="I-D.ietf-rats-evidence-trans">
   <front>
      <title>Evidence Transformations</title>
      <author fullname="Fabrizio Damato" initials="F." surname="Damato">
         <organization>AMD</organization>
      </author>
      <author fullname="Andrew Draper" initials="A." surname="Draper">
         <organization>Independent</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Independent</organization>
      </author>
      <date day="17" month="October" year="2025"/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester to decide if continued
   interaction is warrented.  Evidence structures can vary making
   appraisals challenging for Verifiers.  Verifiers need to understand
   Evidence encoding formats and some of the Evidence semantics to
   appraise it.  Consequently, Evidence may require format
   transformation to an internal representation that preserves original
   semantics.  This document specifies Evidence transformation methods
   for DiceTcbInfo, concise evidence, and SPDM measurements block
   structures.  These Evidence structures are converted to the CoRIM
   internal representation and follow CoRIM defined appraisal
   procedures.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-evidence-trans-02"/>
   
</reference>
<reference anchor="RFC9124">
  <front>
    <title>A Manifest Information Model for Firmware Updates in Internet of Things (IoT) Devices</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <date month="January" year="2022"/>
    <abstract>
      <t>Vulnerabilities with Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism that is also suitable for constrained devices. Ensuring that devices function and remain secure over their service lifetime requires such an update mechanism to fix vulnerabilities, update configuration settings, and add new functionality.</t>
      <t>One component of such a firmware update is a concise and machine-processable metadata document, or manifest, that describes the firmware image(s) and offers appropriate protection. This document describes the information that must be present in the manifest.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9124"/>
  <seriesInfo name="DOI" value="10.17487/RFC9124"/>
</reference>
<reference anchor="RFC9147">
  <front>
    <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
      <t>This document obsoletes RFC 6347.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9147"/>
  <seriesInfo name="DOI" value="10.17487/RFC9147"/>
</reference>
<reference anchor="RFC7252">
  <front>
    <title>The Constrained Application Protocol (CoAP)</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="K. Hartke" initials="K." surname="Hartke"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
      <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7252"/>
  <seriesInfo name="DOI" value="10.17487/RFC7252"/>
</reference>



    </references>

</references>


<?line 789?>

<section anchor="full-cddl"><name>Full CDDL</name>
<t>In order to create a valid SUIT_Report document the structure of the corresponding CBOR message <bcp14>MUST</bcp14> adhere to the following CDDL (<xref target="RFC8610"/>) data definition.</t>

<t>To be valid, the following CDDL <bcp14>MUST</bcp14> have the COSE CDDL appended to it. The COSE CDDL can be obtained by following the directions in <xref section="1.4" sectionFormat="comma" target="RFC9052"/>. It must also have the CDDL from <xref target="I-D.ietf-suit-mti"/> appended to it. This CDDL is line-wrapped per <xref target="RFC8792"/></t>

<figure><sourcecode type="CDDL"><![CDATA[
; NOTE: '\' line wrapping per RFC 8792
=============== NOTE: '\' line wrapping per RFC 8792 ================

SUIT_Report_Tool_Tweak /= SUIT_start
SUIT_Report_Tool_Tweak /= SUIT_Report_Protected
SUIT_Report_Protected /= SUIT_COSE_tool_tweak

SUIT_Report_Protected /= SUIT_Report_COSE_Sign1 .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1_Tagged .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0 .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0_Tagged .and \
                                                   SUIT_COSE_Profiles

SUIT_Report_COSE_Sign1_Tagged = #6.18(SUIT_Report_COSE_Sign1)
SUIT_Report_COSE_Sign1 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    signature : bstr
]
SUIT_Report_COSE_MAC0_Tagged = #6.17(SUIT_Report_COSE_MAC0)
SUIT_Report_COSE_MAC0 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    tag : bstr
]
SUIT_Report_Unprotected = SUIT_Report / SUIT_Report_COSE_Encrypt0
SUIT_Report_COSE_Encrypt0 = COSE_Encrypt0

SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => [
    * SUIT_Record / system-property-claims ],
  suit-report-result          => true / {
    suit-report-result-code   => int,
    suit-report-result-record => SUIT_Record,
    suit-report-result-reason => SUIT_Report_Reasons,
  },
  ? suit-report-capability-report => SUIT_Capability_Report,
  $$SUIT_Report_Extensions
}

SUIT_Reference = [
    suit-report-manifest-uri : tstr,
    suit-report-manifest-digest : SUIT_Digest
]

SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : {*$$SUIT_Parameters},
    $$SUIT_Record_Extensions
]

system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + $$SUIT_Parameters,
}

SUIT_Capability_Report = {
  suit-component-capabilities  => [+ SUIT_Component_Capability]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]

suit-report-nonce = 2
suit-report-records = 3
suit-report-result = 4
suit-report-result-code = 5
suit-report-result-record = 6
suit-report-result-reason = 7
suit-report-capability-report = 8
suit-reference = 99

system-component-id = 0

suit-record-manifest-id = 0
suit-record-manifest-section = 1
suit-record-section-offset = 2
suit-record-component-index = 3
suit-record-properties = 4

SUIT_Report_Reasons /= suit-report-reason-ok
SUIT_Report_Reasons /= suit-report-reason-cbor-parse
SUIT_Report_Reasons /= suit-report-reason-cose-unsupported
SUIT_Report_Reasons /= suit-report-reason-alg-unsupported
SUIT_Report_Reasons /= suit-report-reason-unauthorised
SUIT_Report_Reasons /= suit-report-reason-command-unsupported
SUIT_Report_Reasons /= suit-report-reason-component-unsupported
SUIT_Report_Reasons /= suit-report-reason-component-unauthorised
SUIT_Report_Reasons /= suit-report-reason-parameter-unsupported
SUIT_Report_Reasons /= suit-report-severing-unsupported
SUIT_Report_Reasons /= suit-report-reason-condition-failed
SUIT_Report_Reasons /= suit-report-reason-operation-failed

suit-report-reason-ok = 0
suit-report-reason-cbor-parse = 1
suit-report-reason-cose-unsupported = 2
suit-report-reason-alg-unsupported = 3
suit-report-reason-unauthorised = 4
suit-report-reason-command-unsupported = 5
suit-report-reason-component-unsupported = 6
suit-report-reason-component-unauthorised = 7
suit-report-reason-parameter-unsupported = 8
suit-report-severing-unsupported = 9
suit-report-reason-condition-failed = 10
suit-report-reason-operation-failed = 11

suit-component-capabilities        = 1
suit-command-capabilities          = 2
suit-parameters-capabilities       = 3
suit-crypt-algo-capabilities       = 4
suit-envelope-capabilities         = 5
suit-manifest-capabilities         = 6
suit-common-capabilities           = 7
suit-text-capabilities             = 8
suit-text-component-capabilities   = 9
suit-dependency-capabilities       = 10
  
]]></sourcecode></figure>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1923LcVnboO75iHzoVk5rulkjdOdE4FEXZqmNZCklPakpS
yWhgdzdCNNCDC6k2Rdf5iHxAviWfki8567ZvALol2cfJebBqErOBfV177XVf
C+PxOGqyJteH6kwnbaXVqV6VVZMVc1XO1NmPL87Vj6s0brQ6a+KmraN4Oq30
5SG/4sZ1lJZJES9hkLSKZ804081sXLdZM66owXj/QZTAGPOyWh+qukmjuql0
vDxUL07On0dRtqoOVVO1dXNw587jOwdRDG9lRVmzjq7K6mJele2Kp40u9Boe
pdC9aHRV6Gb8DOeNYNi4SN/HeVnAWta6jlbZYaRUNUt0WjfrXJ4q1ZSJ92dW
pLpozIMaVlzpWW1/r5fBz6bKEts4KZdL6GvfZkWeFW4a/aEZ51ndjGGQaZlD
s3F560/wBiC2jFcrgDO3jdtmUVaw2DG8pH9ZAa2fTtTLsooL85Ch/LTSRRoX
4auymsdF9nPcZGVxqI6qpfo+W2aNTk0DvYyz/FBNufNkiZ0neFT/PMc3E9iK
mZ7m/m6inmbVxaLMf47c3N/p4iJ8DhMfqudV3BaLcqYrdQYnhM8Npgy8kqUs
YKzJVMb6Z1wKLKJo4qShVogkGiB9utCwoKaK61qrh/fpXVKmsJivH9w7eHz/
a34CmHKonsXVErAgbaRVWzSIc9/qahkXa0C1YlbCn012qREzXoyfTRhboXsz
jqtkASBLGrgJwesqbuqxvswATxI9hqUAgOD96fPjx/sH9w6jYnhQvAIwbzbT
dWPa39l/DHcA3+Bs5uH9g0NYba3l98P9/UN1cnTOPx892L9zqI6fPftefj98
fGCGu3v33sCcTdZ/SBdsnJYAe179i6MfjibJtKzGTTz3npSVHq/iCo4bbhc8
jwDBEbjQ4Ozk++eHagcmbhZZvQNPovF4DEeNxwPHFp0vgFKUs+YKrrChHABx
1cBzc1uRspwvAPVrtYv3eU8ZGKlVVSKQ4T6oq3hNPfHcVJrNAH9gHarlMeGe
q2lZNkQbZnl5VcNFVlOtoHNSZVMNr9cqpvtZFooPfQLLy2pVr3SSzbKErort
UEPrPJsvmiuN/1/NtE6ncXKhljpZwPrqJWwibqI4p9li6Hip83IFaJ0ValUC
ctY1Dgi7i92OYFWVBqwGALVJg3CIUpgeW9bQKuWtAOzoAYyGSzWr9+GSwPBl
NYkI4MssTXMdRV8hUKsybal/9Kn9IbTH5nWUl/M5Enq6c0C1KtqgSoD4Np8D
DlhpZIFQIxTwlOFB0fBIQKLkuOAc8bTUDO69bWl2F7ndwXYUYhae/khlDiGo
Q6GxWVytYWVAhaYaFqdprIi5kzoHLLyAjRznGa4CQYsdO2/PdHUJ/4lrAM4M
Np7CiqLr67G9lTc3I+Q+BL+DyV0A+hEzvJfmQF6bJasEdonbwpNGMgX4Ybfr
AGAwOQLg1nDSEyCL+u8tLDKHjRLcqgpHK3Gzcw2nAd0IDeo2WQATqhu9rM1M
kcBFefC/ypqF0kXZzhfKkjnYAKwLNpmqCleUxG2NZ1ukOATgjYYpqwr3eqkN
Go4AZes2JykAzgqYWBUrPYMhBZ+la4SrAVIJu/lecAl3wp1rvAg6hrUT5PAi
4nEguOpsucqz2ZqO2pw+APlfF1mu8dQBAfBCZVP4yRPS1OHY/rCIHxXuPNIf
gN3iSgx2A1DjBvC5YWhY9K1HjGkwghbg1QDMKs4jkGKuENeR9t1ScH4xAjSn
AUYKSGOTJW0eV/laXQEPwyuWzRGNiNIhz5/GNfyUJcAYywx2Q9B056JzTaKD
97puV7RTwhY8gFWO57NcgUCDLYm8Hj99darK6b/BmfkIzLsBuaJdEuojmUL0
yBK8PSVtRQAZK6TWGoG4gEYOS69ijwS59voDkAzExks4acCRNs7VZZy3MDCu
FMgLAASeJQsNQEOQCc2hI5NLwZuGKXE/uf7AGxzb3Smf+fYGWcK1gecpEgRY
YZPpmgktXwy3VrpKH2CRim8arTDGQyMIC8Yi5VTHZYG0iggvouY5CAlZUcKp
rdX1V437dcOAB7FTodxZq52XP56d74z4v+qHV/T36cm//Pji9OQZ/n323dH3
39s/Imlx9t2rH79/5v5yPY9fvXx58sMz7gxPVfAo2nl59Dd4g4vcefX6/MWr
H46+3xk480oLF8yQ1a4qjYcWg3xumSL0eXr8+j//Y/+eur7+X8DHD/b3H9/c
yI9H+w/vwQ9Eap6tLATHiUatIxBZdUwMD8lcEq8yOFq4SYA3NaBSASJdpeEm
33qDkHl3qP5pmqz27/1FHuCGg4cGZsFDgln/Sa8zA3Hg0cA0FprB8w6kw/Ue
/S34beDuPfynb1DYV+P9R9/8JYoYSRBtAEGOSJ6nwwVuu0JuZA7Q8JAdOi/v
AluOA5gdvRmWIt8hL0rTDBvCEayFiIUsn0h8I4uJngLdP4TxoU+ci4JAdwcp
O6hYTYxkNlvGcz1RRzmsGzkIkeZwWNCCkM8ghsGQuJs1/WUlCoVXM+YLZVEO
lTkFrA5XqwB/chhO6DrQBVY1O0sp8MGrMxJMgJpO8LaSYAkU/+17AChcQrih
omHiL7mhQYMMRRh+zaTCyF2qiS+Aak/XBKM+S59ELxojFNVCwjx2ipLNcEcE
fIobW8IEgag3ofXbBSATpFsKAEWiNqvKJR+kN9MINFFhhgUIulmR5G2qU1jd
jOZ38ucirknUXa1xozivQRe6tiQhrUF6QpYEak6uu/KBL6Feyf6ivvBJE6VA
rWk7MiKJ58giCTDIJ1tUkuoI14hQrMpcoYQua7NiH8PEzkKkRhggQT2alcjD
jIRqh1lVqNeCuILseQy3pgFKLkyEf99+BXy8QvHotVVj4M15tR6fgEACf562
eN3+TiuFn8AJ+EoBi31Fq6z1iFeU2FcKBYc5s6OpXsSXGUBE9uRAJEeJRz+L
gcONjBBaOGKqBDQ8MAvFgOTnPVXBws2pAqNA88ATQGUJbQzYDvYa02HE07Jl
cRuOyO2BIEaztxWpU1YGDx8fi7RmYKR2r6+HCZIvKt8HUfnungxVzma1RoQA
/No2dGdmJw+gVeaDvN1hZr5D3Nzy8Jdl3QQHBH2R2hC753NH7IbL5gstdK/8
QSO4Yc16hSJMzjTBbw4Hc5YhCLpyKWk4cDWLsTtKI+XuppnI1KjcrllsJ7oG
AmqiV0y+VZJVwLrRapXoERyj7Iy0ABFcChq1O/4SVHmkIPi7LZBAM+EJ6MJE
fVdeoUhrhoY2dl0g8QIHZyEHRT/BYDH8de4pwDAhTRqlxIgXZnGLV4T/hy9A
VgQKD7DaYTmPKNkOnYFlWwh5FON3IpGBFVE+pm8oS1zpPP8zyqa0eqGMXhNR
IA25J8EPMNQzOd7c7AGhlJsGwjhfIrNYgfOIaJQBusiLATIA/EG0qoC1OfXM
gZUJBb+KWHMjksgyGBkj4yrNal4x8CHGR3gHjGLW5hNR2IErViVqSqBj8ekQ
4QFkTpgUoiaBO/D4K/OwtjZKV6CeRsQQ0oyuJejLSGphHl0gf8VXMHnuExsR
CcxUPCwSnSZBQw3yMV4OM4wSl/7LL7+QSQpnNjz3iXrDpjvHmi2lGGepWCLV
oXpzS7VAGtS70eb2tZAVbA9t+y2lwVhIDY/cDja1ZGVMZGVbU0/DcOulTTpu
wr3+4R+8vb8/+dDoguw60TsEThRtggIchZEU0KLYoCp8tcgAASw39MWPyKAt
m2di7kvKMAGdUcraDDp8leeLI8MiUDWYkxyHo6EYoNDYll90771C8+vIE9JY
LEAzAsiJILEtV82aOQ/AlGhQ7aQjs2ZUKY2ByVxcGsOjLyLQ8FAk7fDgo60j
RXCeZs3BgF+j9LnSaNRP4BRHaAIo4Dn0QuMUIH8FfSoAGnDXCFcM2PycaFeM
JGvEYkit3W6C8UkMuhvMEeECydhBC8K+/mvqcRA+wqNAQ8ZVQar5KRozCatu
qWem3VodqV1G2Dt7kTHkd1q4JiNoNNzmqWuzvzcwjX2/v2map3aa/Y3TPHXD
DE9zbN4fbJrm2E5zsHGa46euDU5ztJHcAIzfvoH1vn0HinubpxZRPTx1cofB
sshhGZqFAGcDOEzUGQigZP5BYWzr3LDAt++iztzBVjZQCUP73M1iAtETzLqX
FtcfEw+ZqFeFyDM7TblSOcoFO70R4H6I5bCpEC+Ft1rtBgSqSKhUxgZJYsfC
uYnYALbH6DABNKbNgNyUkT3piXponuVljOzhkfmdFZflBbZ4bJ7Y27EGaNRl
3jLxf6L275smq3iN44xnGvgSvnlg3oBGldKcY2DMTmWFJt6MbJx9og7uCOMl
ioPy2RSNRg1OnxpLIj9gO71IVixvGMhMPnV0QuUzJ/qINCr8isRQQUMn0sNO
IsZuEp3ZJokCZ+/gaGQQ3DQyempyFa+Z+pPkyrgBarwnZTXhSzZqsebmzhif
9xBNSPdyePcdViwzgfA01aQkTdcNLThUBqLeLHEjiD50N/HESpJ1O7N3uXtm
1Hb8IRt1igVtF++J2C1Q5uRTaLKlT/RZsES+EzBXGB064Y2uI+eSSFtt8CS+
BJEynmagbJNGDhAZy148e6dYUMtZdF614gayipwz+k7U07IRvoI3TbqRGLDB
jYLryEu48iW6OayJ3Eh1ta6EAXlwS2ujF0Ud9RJHuyhAD+WDQXDUgFFkEPa0
WT4iNuP0DsiTqaxkg4aDIbMuwT+3+kzUEdonIasWGz4SWDEV+8obi/18b59l
c7IzgKiex3XtEL6SQyUJGcV4vrPSzQl9agrYd+G5jeCeqs/Rix9N7k0e9axY
hFzWikVKS2jFogZZz2+nen47kKCcxBj5mlFC5mo8RoZn177QcUWi0zEasGuJ
Sob/JSMgkx/Bdtt+qnFVBg11OvI8NngQTsVkowhSQqsJxyu5MBHDAtXucqmd
RYNdNUshoqK+VIS26CCL676gdhiF8iyROW6H3G49XpWogxj/9IC3lRAj8tcQ
z+eVnpO+TWzTXdkQ5oFzUUVWOSVr5c2khwkRsqE4hysoB+mNjDfljPwceCbB
PbmCw7C3iKRQBh9CnylK4AYxum4GuiRKzwmRpbSvzRHuPVHXkdWN5NhV8O/J
X5R0kNeoGH2jPJweF6XfCzpgrMDIjUuN5Cz9Zm+t8Pf2Dch/vpZ5W7w+hqys
x3Cjs2Wt3r7rD0zY5w/cILW9TVsbajsm4wu17KqHfivRvRwA8OeW1nQIrjW+
hP+QLxh73fQB566EPLHdj+0bGQk7W2WUhvaU0ZtoA7TkePmlzwrcRObh+xeW
WOJcf+rrwzes8iJadxDGuvBjRzzUj6cvCD9TJsqMndjRCRh0RbAdeY7Ipwfi
LJkk6LqG04zbKos+y0qJ1PjunqUGsry0J+CwyZ7XJ1RDfnVk7pFdHNFHvn6o
oBKQ0BOEsEvEqG+EsTufZ1N9BGuF6/nDq/OTw86KULpEFrRyYAXSWJJu65hb
L9wC6DQLD5l4idGA7MeroH2qyEAggx15UuFuUuY5+y8AqzO2Wu6hCIDYHfXm
DQlzbSQ8lglH5AOhEVMgGoFPHdZbJ7qIq6wUx7z1hVMME6yF/O0VGc3Rgmcd
BUjCehEvbx156hM6A7mO5YpuoBXpAbfQCNQI5drQSk5GjEUsbow6tqDBHt4N
CUSV3W6EyqfRZf/OXsDnkkWMgVkg8dUA4BCBo9PQDENCkLSgOycCVQ2X3DyP
SUxakPRbsPk0q+C5wWrLB0O0NzhoMTW1Ysbb9ycFy5uTDVBC6AdxQCEZMeK8
f5OjnizQGZy5kgd4FwRFLgbA8EUBMgDajqBLHq9RrmmsVm7dZ4FC8PLobwi0
cpk1Ih1X2qdVxOhRiHDAcUYGfw20J7s6t5o4h7uWrjsysB/fYoIUPSO2k7hx
SDQjzyI7JIqlXw3y4kA0NU9vQjCatlntiSt3EGjLsuqKoSB5D3MiUHGEJHVk
KBiCnGYuHkrcZWS8zySSiC38tagC7FqNffvkpDtukfIuNjDGmGSqak6ohNKm
QqE1FwulIZ+kWoPw1CaClqhtLeB4hJuxpM12pAJlCjpUsxVZrhF2kYy1xk1h
ZivnQqCNKiqdS/bCY3sGAEioAG9kjkU8F7vMU+1UxOF9smdeNJ4YVYAVB8L0
T8FrhTDAiA+UvzmwgfSLiA5qluXkdDNhSufrlR7ft7Ylco4O4Q/yrSlLvSDZ
b0ITUAl6UrCcN8WokUq6cY6pWR46NIYacIzeCtCxPw27FZ2bVQRu0o1An24C
FTYSAYG3oYKoyq7fyhjQVuFcdQI/0doWeQ5RT2F96iGhNZzbOC1m4lbVo3vD
xBrOSOJiQ+QcqaF5ajKOSdAP3WjYCxreEwwV8TAAmyUYThWE6ZGmxv0SG2sF
yh6vimKskTn23EjvGf7vPfizrHpLdcVUluIH5FEQqVkm/YUIXKBTn/LqugQO
H/boG7X0+IQXDVxSzJOzF5ELjnTHFN3T4v9EaaVNUJ9Ep9ta7bJhAvkzKCJ7
SCuvFmsUxsSj6hqgWLaKJFTH+h9Fr/Mv6d5kaNlG65hjrAT0WGTzxZiswOSl
BVrh+/2seYXxUeJUCRnRZUSmUbwhFFpGjkgOG1ox52e3JAvN0pfoS5oZnsyE
dIkX3NkFKa2jdqZjuwEcYUzB6Ri6pw+9GD4GBXJ8JEstrscYpnVEZIe6VJMN
g5Y1aAuFhJro9JACIN1vdfzq7ASFc2p5c7Pn8BVZGFJ43Zt+w1xxPv/0VNCo
rEAGWJJR8tODtgVni6BjGYRNEIVjXNztl0fHKrB+M0JtBAOZ1bYuz3eKfHpd
7m4GYwbeyFQDLcfjih1hu40KTPaBL1JaavEAYiDvZ8zkw+KTU1nZGGeI6VZS
MIfEgrFasWFSG1OyZXtk8I8jL/zk03siCz/g9aeGdZ4AEjbraNpuDETDGYuv
GxtQDM2WG2EpwSVjRpdDIOxhbJIxddXlrBmbmG90YmwY0UYpBCM6Iy7SOD2Z
T0ZRWl4V6NC5jbFrt+ureHX7Cm6C3gsMCT3jDD9CWYWpEfIUjz7KGUdWH0Cy
leppy2ZTG4F/zqbjVBuE8Olc5NE5MrVMNq5JTEG+E9zEILOBsZvvwLkABkut
MxD97Z7OwDvyTHTbjUObeJQXF207ifl/GHl826SzNPkG6SCc+PraH9aYNt36
zAKgn7X2UqoExfIMhfKMKNqoSim0hcO3OGyUcMqawVclPFtPFGcNNJ9YM1+/
QD6C6wT6QQxy/sifgUKZ0Z+gCxTyLH9fsy4i2wlgSW4Q5wryg31Q0MJ0EzUF
9L/K0maBktMgeHCJbhCOE6OhgT3uUy/OajEhVrSYv7dweHV4vGZQjHyIDrCn
RTdUFUEvsvpD7PfaFtpqaZjl+OTQUEdO98QEDk0ppEvQlP03arcG1L6+loQ1
NFjgNKdH52fqyAv73+MoL1yZ1+KvxNMAnLv2L7I5zeCC7hEIsorwvqbcssif
+ETU4YkaeupUY/vkWFRAip/EJXA/dhKhYNRpaYIFjE5AKR2D3V+iGd+68cLm
lWdpCd5wlGHlhfdQpDgg+iiSkCEdF6ZdKObazS1LZ7Q0+wNaXKN/RR6fFClo
lcGkDu4GxHDiP4oPMXSFd0RSRuglUiQ6FzPQ1wgYQbVSYTIBaCCiopJl7wo6
LjK2u8xIxSRM4iyWSSSI5Zs7Mg5IRgYexsI5s1KE+cBzZmG9qMHMQ4YB/xhO
Y2HEy0BfMSV3obN40gnGn66FsOFSgok4KhdgS5ayBi74bjbRkxEzptvWMeMs
S3tADD6QDhVghLdimA9dww0o2QQwuxOaTDRjuLNxlf2M2TtZLPIhSRHUyIq2
zlrL9BaY0pjoHVohQBg2Bsa7ONGWtFmUl91JEEInqC+uyCm7ROI21xJv1TsN
ExxJ64OlDN1ZyZYrLrOqLJZGpovc/eiNSl4168qeOn/ZBO0TbCQTR7K7TKQu
1yaTlW6E+LZr3+Hdj5fZ9X9FloDu2ZhdM/uf0Xhj4oiwE6jSHNATTosGhiXG
bbI308OF0acyGUYu4iKMlSXrL//9rbEpyQoJWgGQjiTPAyU1tAmgVMIiHqas
cWJixNGEcYLXmwOsQE5ri8ILKB7gKvC/7jLccUXhaQVsNQVSQBaMxiSZNXpe
SbyFgxOpiw5VWIYDbaNEhM+QxAwwK76BYrZBu8V6EyZ6V+aEcqSDduclHs7u
ydE5tCT+N4a/4YKMfJNsKPmgXRhtAWR/J0gYQUmEXd6khwWboSsstAffIrWp
O3ykeAyvznp3SlVEQRBY2CJlcOKYEV8FsR4gEQLIvpgp5075K0ep7ArHD/1Z
hqEYpd1xGs6IyrNLXYVRGIaY24CPFDuIV4470NELT4nzboqLPw2ZG1BKfZ5V
S7pozzIs6wAKFdVgoIDDWnNaaZeddAcjxoLcXoLTlOSAAnGGh8R1umD5zBls
5pidojvQaGAyWYbs0I5htvWCo+B43pnZf9wR6t2iAhbvjNddvGVZhCNo4hWo
RUZUwatxdG4OWmLwNGNhTZjGmx06iomsGTPYft2CXS77f8tyN2OVHDbxa6O+
dhEJhGQ0HDTod6UgrrlGn+qeDOuwl6Fy6mSVeqOw4lix1T659zHnyogbgrta
vBtE11MN/J3itgIq51j3Jrh0sxwk/dtdXzS7mHV7VKn20m5MyiDpLD0BhQKg
bGEGC1Bob0NRPW+LiudIexslWds9qtULDRB0cNhHNieDRr39CDkCJTyjfQVG
uS10ScSicAd4yO3SV3ANEmeNr/z46X+dQNUAfZjFsE+zHrg3I4czUVc4o7jc
SzJSkLefIt6dsYgEqIYOw/oQamoU+QzLgNfnAr5Mz4q94mAm8Q9xGJYbgxJc
SJchSy3xVcdk7u3RIjRa0iV4mhfcBWIkxQ9MYIkegohweM/FLQOjI6mjt0yU
55nFsSrN/hwuLWCMRKXJv+DQcPQjREMqnNW6Oeylq3dR6oRTK10gRLRbcPkJ
/WERwwIx4Qu9RHtsT3JpoUNCmeevImk6Ck0UbsdrYqTfxfXC+f0d0JrNsRSd
bW2JjYDxj3ppvVldt9q4WcXow+L42/c2knjA8qqiDZxi81InwwtwUTFc5kTC
ngPrsncxKNIJlhLhi0WMlTaEFuFNE3z38MGmCsS9qTmWEygFmROCmgnmQrlw
GXPnQVCYeWjJNkZUm02DaAFLzClRpUpZ9cBTNnGaHNtj2jj1hNtoMsmZ5MnI
XA4WDm1jG/OA8iuZgm0IgqJIT7tY8iZiyvNUbFq5DsNHu7cERuMNCgOVqasy
RxEp49jKqZZAKcNK2DMlki7sAehsJqZeW4YGAwtGAY02vt1gAWIwlNIZJEQY
Vfwca0VZiu/H8AzUlLq5CSqzsLiVq1VbUTrSS48AnkohFLHnSGpYYfy+rakh
RDZ2Lrdm9xBig7CbNQL2FGQP/O/ruOL0K+8ORW2B6l/jRwiQIEOGQGd19UrI
XX8V2IajyI/zYI81hSlOKYrFs1ISf2V9VELP447JNTYSDiW/c8B9rilXldMc
6QBHoYHTETJjLORwBtkohVoJUzf6/cjlEuNoxlVX89VwjqUXz8Rxb51nmys4
ITumSLWAgvXN1kzO656XvBf/6UfqOt9YAC90lr/5Uzes0zu1d94A5BgMu3sB
tDAMaKIu1NYBaKjPQIekWq8a9I2Wn+4gMbFadKPP7mCJ+Od24ODy4V0PdqBC
P8NA2tZh+HgGO3gZUb15wg634Af+rTb/CztItHAPk8LA4WgzujxRb25RJPc3
GMYgQY5HjhtzDx+t8dqJxYsDQ3ptXzyTXDRkTabkW6IPUdJFEm78RzlRc5u7
LleNPP9f42q+ljtM6dMkKV5lOSI0sFCWOOjiFWvv/kowv7iiTeKz71Ya3FOu
Y7L1tisjzNMKJl9LWKAm1zxufcb1QXiiWQasiaODahAGY3RBYSYWh37gI1Hu
Sbgj7htX0wyYRLUOQ7Wlu7HDURUtlu+FBvuYMxJtytSy8fyDAYJZr4P1oSNF
QLF1bXShsBza5tDUieMMOLIJZ52u/fw6E21qgqeDIjd9As7b4ji/VMLSDK1k
q54lu0Zo7wiCpnTSMl4RTILRsOYaORnXBgMkqARt7WWgTNvx2XQQV1XMwo3R
obLaBEDD8YbKgYT6BpnKXbNGF65BDcew9MbB5GAkiVAsYRYOwryxkZfBhch2
NzSc+CtBwBgHuYP+lUmzskHuMQD87Zu7IwX/23/7jvI23tx9+27k+bFxKhRJ
iNF6WYd4ITqC+O7dvdHA+2PO+6G3pqRf2CJY++7+Hqm8vDmJpupmqNPh9wrc
+PVnPPDtUgz+V4psQ6x1Xn8FV1sStr7E9muEj4TrfPhBx2xrRu1tu7U5dAEg
QEJ7DAmGkw2pZCSguhBGuRyFHr7XQQpYFrqPJYPXu2wUHcZJtrEXV37EqR81
VcPpyc5GaI1XjbHyixEudISuKUAcN5WXcymw5wVmDUjlooihGtYmqAHDoj0l
gqRjiZIOBV9iONZET0YmF/t5Fa8pqsOWHLQT25D28bgtcnRiCol34UCVF1Nr
qpmMx2zpMJYcR/gi31a021dc94ZclpeeDYsEaKIGU60L0Cs02TDRl4WWm4aP
x5mGuJCpq2M6oCvjcflT9pxSvh5rFBls4+A2EPLRMVFFUsfNhJR2XctFEFgK
yg4J/NDUXziiEAUOw0mzxhPZiHlX+ITrnHiXwVSY5K7GCeRqgbkUili5wDKj
JKIbHXQBupXHlGYKP0ztGdNUNwmTk2BXx5YYgNpk/kYKg5ohVYjsHop0JO5Z
A5bUM77Dgkt8HNCDAy/2D+4FNrLJ3cn+g0N1evIvk7OT48npyetXp+cvfvh2
gqUZpGKqMVWbqlZG6aKwnLXxzwuaGy7uithS/jHyRT/fgaA/YxMKFY2Mi0Ln
gXcPEJWqyC7JzSOGUyTPq7KceR7Fyiqg22mMzWZBUArrYg7t1RBxWURwVxdl
ysWyYGBMTuIzpGChyhVcDNM0AgvHvIVLXzRae3lQNtHjJ//C/CSoJoRvGy9R
A6ZOYPz7D4A90VLJjWz8UCQIscOddy5pKXwqXu0oHKeWYuu4naZMytwt+9n5
92cw8zeERPcegkwHk534jhO7sS5f81ykHOtqKbbYWFx1JnxtCr6Yi2DOTWcs
AqufsNV7mBs1yDs/IU7wI4yC3f/JH96wvx4OkF8/t3AioSvL85a9ydbYzwo6
yNZ00lQrZjhNFsPUG44ru/0kyO90K/OyWXv/Jsagwu1hNNIOvnSK9+fxHDNW
fteZXh4d3/n9Z/gNW4m2A+eJ+urBZP/R7nCrvQ29bXLgyi790KYxK9UW/vPr
W8ifUBIGCnnDLcyV5F6Kiq4HW//RDSEJhiaqW/pE7/pr80HFG3vY3xg2GtgX
HeR//7aaeD68Ia+lCrBC3e7jiLn//W2ZNzBG2JLMEz+UpvKPzx3eUte3ctRd
66Z5SwAzNARI59TWB3KWDGpoUJF5Zk8xbrKbG88rS1RmwpnQUpmvXxvADG13
l4CiyUbQJFstMP3og4s/oA3SSk1o4r+1tQQAu9acbiWaOI9r1hSm0x4OE70V
8CyqzgqgHj59hvkQaIwiiuaQo5Oz8fH5qV0DpkijdGziseeWKTFykEPCFydY
qSaFTuzkow7wHMFh60M3/9LyG8k2Rs2ZV4NZXQxVltfw+wgop9XA700hvuuv
sriIQU6jl+LW5GpjIMngRzMIqCX5/3LWryo9R/f4mtNf1M4XfzFhZ7JhPnSC
i+eIjBZ44cjYz7XJyGG3ATreGzG82Sd92/RnTF8eveYKvkUzlpAqFiIeHtw/
YE8HCShpFo9Ru/PUeVEK3CQUCRXOlKYdZBWgZq4yyQCsewBQJ64Me+BrG3gu
yWOc3LQZNq4rp+nasnCcV2VWOTJ/B17vjJOhxgf3H+A2Du7fP0RhnCpJ1uqI
v/MA7x/cv39XWjwcKWmND7F9ULb5VNzs2OveweN7jx88PHhMzWkQ6G3Hsq9h
kOeU131cLuE+8d/02YSU0ulOPmBiHgx9mekriimSKpI1aeh0bN55oCg7BQV6
sblSvVFbS88ORzo+5jTzbBXNJmYpU2WLk9solNm4y+ZthjEYhZSnNwWNZRgb
3j9FS0J5QVXhMZhD0mnWRH64lg2HpsRs6bL92WvDaSSmaNLaGxWXBAJ1O0Vf
Gek4WPy+AV0fMPrE3wuSHOmHkZys2CY+fengOGvQhCGvKbWk/nsbNxyIaedP
szopW7QKA3E8tROZPF5+g5CeYxGydgaYkrEN01kbZpT37qGnyzQou4kRGLA7
t0k081LyNtKWUyrY02xc45LBLoNjmJ+x6clgkjKDWa0XGAllC6YS6qR6lZfr
JRfGQlT7ucRzblgKoiIA2SXO2XJRujB3EXUqAiMzCg6DT/ISB/eiH+s/c1qQ
s1ewCb7C+s/2xHCziKt18PEHmgCjBoJLyNC3AS+Gvtf2YmP28gVPQL5uAgIP
zencneFMigpZswkh8bMj3ioZnzUV1HDjmHDOuFMxPvN8qFxpiXHQ5sqs0NnC
yXKYcYP43d8fQsTETI1MbFdSZSsmcCaayoZik2VqAwKGtVG7uMHXk5BixoF3
J+HldtcJc4nawlGAhJX/mAHNqXScwEMBapf2mgXgR1SbxUlj8bSSDF0+Mgo+
6BymIXC1F+6iYykgH29sjhY2GyYiGGhxrGwbPBdmJxyhOxeBMdfF3NaJswn7
4lCytIG+5oM3RULgMIF5yZ4wh/BmdBkSjzbXMzGs1NnPNL9YgrKGK0mbO1oW
zkbv0nz90XEoHp8XydwaY3BgZC5H8RKFAioeAPTLESF895WfqnXbC9v5E30+
K7o+lErFNxH1p6+WRYd+LxBK22njv+wPY5im8j+EdaiK2zGQcFy2FGDzJEF8
D1oB5m7touy1B/MYo0q/5fU1cDB8DJIQmej+Eb+tdYNyZCfxcKAzLeN1a1hq
cBV5cDvakZ/YRmC2ZQNI9CLDOvbZYPgfdV54cZ3dV0cSFclpXZL3VI/CJC4U
ioxRxRUaGNgj4nS9Bsn8gwTfLpGZJoSds/4IUqLBfgpDqOyOjy14tCg5v4bm
QGL+kb9Dh9JGhdb6RmqvJUxRTZlgjypZOP3rtwq70neGkALvIgbxF+zKar7H
h0hshygN9sOvjLz6ATGLvyBIB0If65AGBXAyOC8C4u1j/taAfPggx6hf87XE
10ikavYQ+Cyax6D7Q7L3scjez1n2Di/SsPROZMbI7p3+L55ZthXIww6LjGF/
Z6B7vWMF8ZGzJu/gjowUSbpXKFiiLf3k7Ft1RJQZ9ttvswMHjt8y2gUReDJ5
DP/2RsYeKYs5PfG+A7HTVb7IOC4qCWjrA1/Au7kBgUu2w0Tpo9kd/JcowUcE
z0cXSYwfafvo/V+0jWh9VB/Pnx599C4tHiGVT4nnn3VuTutCfc/uXIbw92x2
aL76h6ZkGxa3tq6ZQQWCuQ3AApf1UT3D/LEXaPj/CKqB3E5/4xHsCt6xU/zj
RrVzuJUBJL9dxiv7bkgZ7Vb4cBrYIMA4uBWr+wOSWdh09U87CpCM7+OpzmEJ
P6A+/5HNNubZ5lM/wB5UaerjQE3Ej50vFkR3aTD2EH7sZJqbp90+96gPVSnp
dpGH3R73XY9jZL9D3TjPvt/3gesravJg78q86/Z/6Pen4iQb+su7bv9HCPtu
pGFnjH5qfH+cx4/9cxPUeu8/6BQx7A/h41xoMPi1OBeM8qtx7g68tSyZqNKm
CuXenrgqabTv9zUepg0D1PZ1d5QDIgj89hUHRodjdIpF90e4SxTWhlbyFxvC
Mboln/uD3LO3yS/kFI6y8l90BxioG8Smn99EVGSQ33S+coVe/e/e9eECHBdd
fDXVjfiIiTG8xho56rnkHQ+O48rvbB4PD/vHbkWbM69gjvqOC+YMz9CpxbN5
nrtD8xzZyjmDo3eq70CjTaMjrthCOuq22lBKZ3gavwbN5g3c72yA5EhT/3wD
cHoVejYP/2DD8HKHNk3QL9izeYqHNIXs9edfMcfngOnR0D6s+DY8x2Blns1T
PCb6xEV3grnCwYfq8my5V3dYKpSMj+db8KVbcWfLoHhbX5lyOlsH7Rbd2Two
0rX//A8+ux4r/U1MbMt4fXI3SOGYPNna92arG4KmP/aKzxA5Ojap+a53P6B9
oC+SGK/a+8ft0e0DAyAVOUa/UTmv4tUiSxyBcovZEPs+MBxSDJsTbABpxhkO
iB8Y5YHP07ujDEfJD4zyUOCKAYmdMYYC5wdGwIt9jv7Cbv9+HP1A78eBRLBl
nM/GFLqw/qdYwvZbA/AHhqNwLmPu6bkIja1noMA/VQdCp0Jb0acN0X5kg3H4
M7/2W4d/lWzWVHE97mYND18YLyl+15DSOo27FDVG+rihjbbCVrQE9xlkth4n
i0xfigOYq1HKAFKFtW1yU8setm6j027QR5dqrqDRidKTGL6pFH9ci33eBlNV
/WoutnjiKDJxQ3o51aRiZ1ys5egc6NCFNsYsIG4S1EhWpn6pEVPny31jjZwX
3peqgnxQtH37N5iTDcq2sJ/X86sk7Jp0uZHNcxvxx7+bxR6WIZY8885HREZs
QMY486YiG6sueIthENnEZVQYYwscLrp30GWBKeU1fQgzMJy70kNioYVnZhkR
fS5AojJTCsEiOFP93C1xc9YdPgotbFSUOsSG52w1W1KFDfdpPYrT63w7m7+T
hWHEOaFeAHjvW3ejKKG6hOTKsRkgGCJICbU1fp9evi0jkYhXOr7AzEJNxUou
27ww1tQMEeKopm2Pgvzm2kNY5/5HxwDKAfa7jyMqyJMV2RLt4BSEmNUX/GE1
l+aXwwK4zs2L8Os/fL3QwOQuuR+uOXL7xtjIkI6YCjJU9SXyvRvik+nGyXqf
TDQhepLLaaL8bIAgV+QjcKY6CkIg4M5hyRKqiuyvgExPlyV+YK6IUwzU1fg5
e8yJueh+7BzTGjF9f7Uoc3YOAK0rEspSxSw8EGIa8t2B7IIejaC+NVbXQh8F
LEQCvwdoB34qteYvOto4YkkktYmx5ExtJQrDxR6fhXV4glhwOGtAL8p/5M/d
UtFIck81EpfIn241pRZpK2O7FekwcLmcUwY1WGY0CD7vsmEUbGS/sWOjVxGp
oRUQAXa14lmYIAnbW+gesANy47n4moACctlmT6YntmIKK5vNSlCmLlwGRzdQ
w/hIbeX+kQ3CdsdBoDSHQQfhwBl3hux85adrdRZE9Gp4ZgURUNxApZu1tVb7
S0AclFLRymRcVH02YHYrRMVUHLQR5V5ML4XyAjR/inYH0nP3MLze5BgglY2Y
3OmaTzOPJQLdlQhWP4lUZZQE+jL3TypZ6OTChL5zELpcBg4f5gseyY5NHhja
ndd94urVsh+oDyWOPpTTXW3aFQdvWaerfN+54tRpW/DMZYM4clpp7MRuSudm
7g1dS8pZQwrM4MeVMHqOih50SoyZxUkMwgxOgnBCqJp8m8sWvQb9JluuyO0P
TJgBXi/ig/sPxou6zpf1GP++uKL/JE31055UTIjtTCVmJ7ITEAup0I4MRY8M
W/dgYD6Z9V//599nJk+GsnqC2QGW9J8kXYzj/YNHODffruCzwcyusxlslgRV
mt2szOSyocfB+OG5rKSUxwIBAqNx+nn0s7bgL8aSBhfnpgKNXNwYVfdJ1OGa
SGP1hxWz8iExBM6+6lY6GQ0WiiHZqeNOhNM2BSexaAbHNUI/LqZtGCRPQrU2
Xb1VlyzIYoEUrEwwoxwQbG40XUJLmqyWvBUMPRG3dHGhnqEn/nwR55KnxYmd
Op3GyQWMCWqrwj9x9OdI08iQd/0VrnCcpGl+Q9TRFgQ1KjSVpumW+7CJBbqf
3BReNjLiGe7N5cJSzrkrB6I4qUoK/oEpaFT5j2IhicIw/5pqXtFoqDeNTxEJ
FLSKtjd6znV42DaQSZiEeyuY6IeaunE5l6YyWgbddrIHeh8zmdyj6954lenc
Ijg+f2OMbX9pcGzUiWKLCj2+qrANlW1gL+Cjh48PyEDyyy+/UNPoz4o/vPP1
26+pj6I+FCICnaCLwj7Rk/DfZ3VSnU5Pwtj187LM35+jIGvD5OlLvJ9q1A2y
/0ToPUVJ4wed3zc4TPTFiQ0Uu7wlUH/zv/93KQ//Q2ugkPD/wbl/l+3/kUDx
RwLFUALF/z8fBnwj9ehk/O1fBPzjg4Ay9EBdjy/4+Nmv+vYZYKj/VZfuLD1/
tPw7VG9uqRbvyrvR5vbG/Yztu8cy5GTmkdvBpl1f8pamnsPYrff6lsDaeQ/k
gtszoM/aeGcAoPkdvsrYW8bIFXH5HWoG/VEy6I+SQb+hZNDAB/meqIPBT3M9
UXeHvsv0RN0b+u4REewn6v7wN5GEFj3Y8sUk/G79JyivehR1+N8T9fixvdXh
xVV3NnwrXl5upXBP1P62T617IBskZh7ouhQMwRcN8B+UOAfDSr6gsYsd+ZJO
nXCQL+jaifX4gp5+XMIXrbUXnfFlvfuhF7+y/69a/mDMxOf0HwqL+KKFh8EP
X4J/nRCH7jfPTOyTd6OGMdK/UtvQb4AcDcYV9alTPy6oT6o2xvj0KdeWaJ0+
IdsWdtMlbFsDaDwatzkgBqje8PydGBcA+eCp9OJWoOG+nOwmsUS4kznET0gf
5gw/IXOYM/yEpGGOcZt0odwRbpMplDu8bZKEcqe2TX5Q7ry2SQ3Kndg2WUHx
gSnFWdz/F6fRNAMoogAA

-->

</rfc>

