<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-conditional-attributes-11" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="Conditional Query Parameters for CoAP Observe">Conditional Query Parameters for CoAP Observe</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-conditional-attributes-11"/>
    <author initials="B." surname="Silverajan" fullname="Bilhanan Silverajan">
      <organization>Tampere University</organization>
      <address>
        <postal>
          <street>Kalevantie 4</street>
          <city>Tampere</city>
          <code>33100</code>
          <country>Finland</country>
        </postal>
        <email>bilhanan.silverajan@tuni.fi</email>
      </address>
    </author>
    <author initials="M." surname="Koster" fullname="Michael Koster">
      <organization>Dogtiger Labs</organization>
      <address>
        <postal>
          <street>524 H Street</street>
          <city>Antioch, CA</city>
          <code>94509</code>
          <country>USA</country>
        </postal>
        <email>michaeljohnkoster@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Soloway" fullname="Alan Soloway">
      <organization>Qualcomm Technologies, Inc.</organization>
      <address>
        <postal>
          <street>5775 Morehouse Drive</street>
          <city>San Diego</city>
          <code>92121</code>
          <country>USA</country>
        </postal>
        <email>asoloway@qti.qualcomm.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="16"/>
    <area>Applications</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 73?>

<t>This specification defines Conditional Notification and Control Query Parameters compatible with CoAP Observe (RFC7641).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-core-conditional-attributes/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/conditional-attributes"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>IETF Standards for Internet of Things (IoT) communication in constrained environments define the Constrained Application Protocol (CoAP) <xref target="RFC7252"/>, a RESTful application protocol, as well as a set of related information standards that may be used to represent machine data and machine metadata in REST interfaces.</t>
      <t>This specification defines Conditional Notification and Control Parameters for use with CoAP Observe <xref target="RFC7641"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
      </t>
      <t>This specification requires readers to be familiar with all the terms and concepts that are discussed in <xref target="RFC7252"/> and <xref target="RFC7641"/>.  This specification makes use of the following additional terminology:</t>
      <dl>
        <dt>Notification Band:</dt>
        <dd>
          <t>A resource value range that  may be bounded by a minimum and maximum value or may be unbounded having either a minimum or maximum value.</t>
        </dd>
      </dl>
    </section>
    <section anchor="conditional_parameters">
      <name>Conditional Query Parameters</name>
      <t>This specification defines conditional query parameters (or more simply, "conditional parameters" in this document) for use with CoRE Observe <xref target="RFC7641"/>. Conditional parameters provide fine-grained control of notification and synchronization of resource states. A CoAP client conveys conditional parameters as metadata using the query component of a CoAP URI. A conditional parameter can be represented as a "name=value" query parameter or simply a "name" without a value. A conditional parameter can be one of two kinds: A conditional notification parameter, or a conditional control parameter. Multiple conditional parameters in a query component are separated with an ampersand "&amp;". A resource marked as Observable in its link description SHOULD support these conditional parameters.</t>
      <t>This specification assumes that there are finite quantization effects in the internal or external updates to the value representing the state of a resource; specifically, that a resource state may be updated at any time with any valid value. We therefore avoid any continuous-time assumptions in the description of the conditional parameters and instead use the phrase "sampled value" to refer to a member of a sequence of values that may be internally observed from the resource state over time.</t>
      <section anchor="overview">
        <name>Overview</name>
        <t>If a CoAP client is interested in obtaining all the state representations of a resource from a CoAP server as they change, the client is able to do so by using CoAP Observe. If a CoAP client is instead interested in receiving only state representations fulfilling certain constraints (such as a minimum/maximum value), it can do so by indicating conditional parameters as query parameters in its request to a CoAP server, when registering its interest in observing a resource.</t>
        <t>The usage of conditional parameters employs the notion of resource state projection, in which the client requests the server to project a new state from the current resource representation. When a server receives a request containing conditional parameters from a client, the server maintains a projected resource state separate from a resource state requested without conditional parameters.</t>
        <t>The mechanism can be explained in the following subsections in terms of registration, operation and cancellation.</t>
      </section>
      <section anchor="registration">
        <name>Registration</name>
        <t>In this example, three CoAP endpoints are shown: Clients A and B are interested in obtaining updates to state representations describing the current CO2 level, provided by a CoAP Server.</t>
        <t>In <xref target="fig-reg-client-a"/>, Client A uses CoAP Observe to register its interest in receiving all updates to the CO2 resource state from the Server.</t>
        <figure anchor="fig-reg-client-a">
          <name>Client A registers and receives one notification of the current state and one state update.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │ GET /CO2      │                        │
   │ Token: 0x42   │                        │
   │ Observe: 0    │                        │
   +───────────────┼───────────────────────>│
   │               │                        │
   │               │                        │
   │               │           2.05 Content │
   │               │            Token: 0x42 │
   │               │            Observe: 12 │
   │               │         Payload: "600" │
   │<──────────────┼────────────────────────+
   │               │                        │
   │               │                        │
   │               │           2.05 Content │
   │               │            Token: 0x42 │
   │               │            Observe: 23 │
   │               │         Payload: "800" │
   │<──────────────┼────────────────────────+
   │               │                        │

]]></artwork>
        </figure>
        <t>Client B, on the other hand is interested in receiving only a subset of updates from the Server. In <xref target="fig-reg-client-b"/>, Client B is depicted using CoAP Observe with a conditional parameter to register its interest in receiving specific updates to the C02 resource state from the Server. The Server provides a representation of the current state and creates and creates a new state projection registering Client B's interest.</t>
        <figure anchor="fig-reg-client-b">
          <name>Client B registers with conditional parameters, and receives one notification of the current state and a state projection is created.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │               │                        │
   │               │                        │
   │               │ GET /CO2?c.gt=1000     │
   │               │ Token: 0x66            │
   │               │ Observe: 0             │
   │               +───────────────────────>│
   │               │                        │
   │               │           2.05 Content │
   │               │            Token: 0x66 │
   │               │            Observe: 20 │      Resource State
   │               │         Payload: "800" │        Projection
   │               │<───────────────────────+    ..................
   │               │                        +--->. /CO2?c.gt=1000 .
   │               │                        │    ..................
   │               │                        │             .
   │               │                        │             .
   │               │                        │             .

]]></artwork>
        </figure>
      </section>
      <section anchor="operation">
        <name>Operation</name>
        <t>In subsequent interactions for providing state updates, the Server will continue to provide all state updates to Client A, while Client B receives state updates fulfilling the conditions specified by the conditional parameter.</t>
        <figure anchor="fig-operation">
          <name>Clients A and B receiving C02 state updates from the Server, without and with conditional parameters, respectively.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │               │                        │
   │               │                        │      Resource State
   │               │                        │        Projection
   │               │                        │    ..................
   │               │                        +--->. /CO2?c.gt=1000 .
   │               │                        │    ..................
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x42 │             .
   │               │            Observe: 29 │             .
   │               │        Payload: "1000" │             .
   │<──────────────┼────────────────────────+             .
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x66 │             .
   │               │            Observe: 23 │             .
   │               │        Payload: "1100" │             .
   │               │<───────────────────────┤-------------+
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x42 │             .
   │               │            Observe: 33 │             .
   │               │        Payload: "1100" │             .
   │<──────────────┼────────────────────────+             .
   │               │                        │             .

]]></artwork>
        </figure>
      </section>
      <section anchor="cancellation">
        <name>Cancellation</name>
        <t>A client that wishes to cancel an existing registration can do so in accordance with Section 3.6 of <xref target="RFC7641"/>. If a client wishes to explicitly cancel an existing registration by issuing a GET request, it MUST also additionally supply the original URI containing the conditional parameters that was conveyed to the server during the registration. This is depicted in <xref target="fig-cancellation"/> for Client B.</t>
        <figure anchor="fig-cancellation">
          <name>Client B explicitly cancelling an existing registration.</name>
          <artwork><![CDATA[
ClientA         ClientB                   Server
   │               │                        │
   │               │                     ( CO2 )
   │               │                        │
   │               │                        │      Resource State
   │               │                        │        Projection
   │               │                        │    ..................
   │               │                        +--->. /CO2?c.gt=1000 .
   │               │                        │    ..................
   │               │                        │             .
   │               │                        │             .
   │               │ GET /CO2?c.gt=1000     │             .
   │               │ Token: 0x66            │             .
   │               │ Observe: 1             │             .
   │               +────────────────────────┤------------>.             
   │               │                        │             .
   │               │                        │             .
   │               │           2.05 Content │             .
   │               │            Token: 0x66 │             .
   │               │         Payload: "900" │             .
   │               │<───────────────────────┤-------------+
   │               │                        │              
   │               │                        │              
   │               │                        │              

]]></artwork>
        </figure>
      </section>
      <section anchor="conditional-notification-parameters">
        <name>Conditional Notification Parameters</name>
        <t>Conditional Notification Parameters define the conditions that trigger a notification. Conditional Notification Parameters SHOULD be evaluated on all potential notifications from a resource, whether resulting from an internal server-driven sampling process or from external update requests to the server.</t>
        <t>The set of Conditional Notification Parameters defined here allows a client to control how often a notification is received and how much a representation state should change in order to trigger a notification. One or more Conditional Notification Parameters MAY be included in an Observe request.</t>
        <t>Conditional Notification Parameters are defined below:</t>
        <table anchor="notificationparameters">
          <name>Conditional Notification Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Name</th>
              <th align="left">Value Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Greater Than</td>
              <td align="left">c.gt</td>
              <td align="left">xs:decimal</td>
            </tr>
            <tr>
              <td align="left">Less Than</td>
              <td align="left">c.lt</td>
              <td align="left">xs:decimal</td>
            </tr>
            <tr>
              <td align="left">Change Step</td>
              <td align="left">c.st</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Notification Band</td>
              <td align="left">c.band</td>
              <td align="left">(none)</td>
            </tr>
            <tr>
              <td align="left">Edge</td>
              <td align="left">c.edge</td>
              <td align="left">xs:boolean</td>
            </tr>
          </tbody>
        </table>
        <section anchor="gt">
          <name>Greater Than (c.gt)</name>
          <t>When present, Greater Than indicates the upper limit value the sampled value SHOULD cross before triggering a notification. A notification is sent whenever the sampled value crosses the specified upper limit value, relative to the last reported value, and the time for "c.pmin" has elapsed since the last notification. The sampled value is sent in the notification. If the value continues to rise, no notifications are generated as a result of "c.gt". If the value drops below the upper limit value then a notification is sent, subject again to the "c.pmin" time.</t>
          <t>The Greater Than parameter MUST be supported on resources with a scalar numeric value.</t>
        </section>
        <section anchor="lt">
          <name>Less Than (c.lt)</name>
          <t>When present, Less Than indicates the lower limit value the resource value SHOULD cross before triggering a notification. A notification is sent whenever the sampled value crosses the specified lower limit value, relative to the last reported value, and the time for "c.pmin" has elapsed since the last notification. The sampled value is sent in the notification. If the value continues to fall no notifications are generated as a result of "c.lt". If the value rises above the lower limit value then a new notification is sent, subject to the "c.pmin" time.</t>
          <t>The Less Than parameter MUST be supported on resources with a scalar numeric value.</t>
        </section>
        <section anchor="st">
          <name>Change Step (c.st)</name>
          <t>When present, Change step indicates how much the value representing a resource state SHOULD change before triggering a notification, compared to the previous resource state. Upon reception of a query including the "c.st" parameter, the current resource state representing the most recently sampled value is reported, and then set as the last reported value (last_rep_v). When a subsequent sampled value or update of the resource state differs from the last reported state by an amount, positive or negative, greater than or equal to "c.st", and the time for "c.pmin" has elapsed since the last notification, a notification is sent and the last reported value is updated to the new resource state sent in the notification. The change step MUST be greater than zero, otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
          <t>The Change Step parameter MUST be supported on resources with a scalar numeric value.</t>
          <t>Note: due to sampling and other constraints, e.g., "c.pmin", the change in resource states received in two sequential notifications may differ by more than "c.st".</t>
        </section>
        <section anchor="band">
          <name>Notification Band (c.band)</name>
          <t>The Notification Band parameter allows a bounded or unbounded (based on a minimum or maximum) value range that may trigger multiple notifications. This enables use cases where different ranges result in differing behaviour. For example, in monitoring the temperature of machinery, whilst the temperature is in the normal operating range, only periodic updates are needed. However as the temperature moves to more abnormal ranges, more frequent state updates may be sent to clients.</t>
          <t>Without a notification band, a transition across a Less Than (c.lt), or Greater Than (c.gt) limit only generates one notification.  This means that it is not possible to describe a case where multiple notifications are sent so long as the limit is exceeded.</t>
          <t>The "c.band" parameter works as a modifier to the behaviour of "c.gt" and "c.lt". Its use is determined only by its presence, as this parameter takes no value. Therefore, if "c.band" is present in a query, "c.gt", "c.lt", or both, MUST be included.</t>
          <t>When "c.band" is present with "c.lt" but without "c.gt", the lower bound for the notification band (notification band minimum) is defined. Notifications occur when the resource value is equal to or above the notification band minimum. No maximum values exist for the band.</t>
          <t>When "c.band" is present with "c.gt" but without "c.lt", the upper bound for the notification band (notification band maximum) is defined. Notifications occur when the resource value is equal to or below the notification band maximum. No minimum values exist for the band.</t>
          <t>If "c.band" is specified and the value of "c.gt" is less than that of "c.lt", in-band notification occurs. That is, notification occurs whenever the resource value is between the "c.gt" and "c.lt" values, including equal to "c.gt" or "c.lt".</t>
          <t>If "c.band" is specified and the value of "c.gt" is greater than that of "c.lt", out-of-band notification occurs. That is, notification occurs when the resource value is not between the "c.gt" and "c.lt" values, excluding equal to "c.gt" and "c.lt".</t>
          <t>The Notification Band parameter MUST be supported on resources with a scalar numeric value.</t>
        </section>
        <section anchor="edge">
          <name>Edge (c.edge)</name>
          <t>When present, the Edge parameter indicates interest for receiving notifications of either the falling edge or the rising edge transition of a boolean resource state. When the value of the "c.edge" parameter is 0 (False), the server notifies the client each time a resource state changes from True to False. When the value of the "c.edge" parameter is 1 (True), the server notifies the client each time a resource state changes from False to True.</t>
          <t>The "c.edge" parameter MUST be supported on resources with a boolean value.</t>
        </section>
      </section>
      <section anchor="conditional-control-parameters">
        <name>Conditional Control Parameters</name>
        <t>Conditional Control Parameters define the time intervals between consecutive notifications as well as the cadence of the evaluation of the conditions that trigger a notification. Conditional Control Parameters can be used to configure the internal server-driven sampling process for performing evaluations of the conditions of a resource. One or more Conditional Control Parameters MAY be included in an Observe request.</t>
        <t>Conditional Control Parameters are defined below:</t>
        <table anchor="controlparameters">
          <name>Conditional Control Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Name</th>
              <th align="left">Value Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Minimum Period (s)</td>
              <td align="left">c.pmin</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Maximum Period (s)</td>
              <td align="left">c.pmax</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Minimum Evaluation Period (s)</td>
              <td align="left">c.epmin</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Maximum Evaluation Period (s)</td>
              <td align="left">c.epmax</td>
              <td align="left">xs:decimal (&gt;0)</td>
            </tr>
            <tr>
              <td align="left">Confirmable Notification</td>
              <td align="left">c.con</td>
              <td align="left">xs:boolean</td>
            </tr>
          </tbody>
        </table>
        <section anchor="pmin">
          <name>Minimum Period (c.pmin)</name>
          <t>When present, Minimum Period indicates the minimum time, in seconds, between two consecutive notifications (whether or not the resource state has changed). The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. In the absence of this parameter, the minimum period is up to the server. Minimum Period MUST be greater than zero, otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
          <t>A server MAY update the resource state with the last sampled value that occurred during the "c.pmin" interval, after the "c.pmin" interval expires.</t>
          <t>Note: due to finite quantization effects, the time between notifications may be greater than "c.pmin" even when the sampled value changes within the "c.pmin" interval. "c.pmin" may or may not be used to drive the internal sampling process.</t>
        </section>
        <section anchor="pmax">
          <name>Maximum Period (c.pmax)</name>
          <t>When present, Maximum Period indicates the maximum time, in seconds, between two consecutive notifications (regardless of whether or not the resource state has changed). The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. In the absence of this parameter, the maximum period is up to the server. Maximum Period MUST be greater than zero and MUST be greater than or equal to Minimum Period (if present), otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
        </section>
        <section anchor="epmin">
          <name>Minimum Evaluation Period (c.epmin)</name>
          <t>When present, Minimum Evaluation Period indicates the minimum time, in seconds, the client recommends to the server to wait between two consecutive evaluations of the conditions of a resource, since the client has no interest in the server doing more frequent evaluations. The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. When the value of Minimum Evaluation Period expires after the previous evaluation, the server MAY immediately perform a new evaluation. In the absence of this parameter, the minimum evaluation period is not defined and thus not used by the server. The server MAY use "c.pmin", if defined, as a guidance on the desired evaluation cadence. Minimum Evaluation Period MUST be greater than zero, otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
        </section>
        <section anchor="epmax">
          <name>Maximum Evaluation Period (c.epmax)</name>
          <t>When present, Maximum Evaluation Period indicates the maximum time, in seconds, the server MAY wait between two consecutive evaluations of the conditions of a resource. The value is a floating-point number, allowing for sub-second precision (e.g., 0.5 for half a second or 0.01 for 10 milliseconds). If a server does not support sub-second intervals, it MAY round the value up to the nearest supported resolution. When the value of Maximum Evaluation Period expires after the previous evaluation, the server MUST immediately perform a new evaluation. In the absence of this parameter, the maximum evaluation period is not defined and thus not used by the server. Maximum Evaluation Period MUST be greater than zero and MUST be greater than Minimum Evaluation Period (if present), otherwise the receiver MUST return a CoAP error code 4.00 "Bad Request".</t>
        </section>
        <section anchor="con">
          <name>Confirmable Notification (c.con)</name>
          <t>When present with a value of 1 (True), Confirmable Notification indicates that a notification MUST be confirmable, i.e., the server MUST send the notification in a confirmable CoAP message, to request an acknowledgement from the client. When present with a value of 0 (False), Confirmable Notification indicates a notification can be confirmable or non-confirmable, i.e., it can be sent in a confirmable or a non-confirmable CoAP message.</t>
        </section>
      </section>
      <section anchor="server-processing-of-conditional-parameters">
        <name>Server processing of Conditional Parameters</name>
        <t>Conditional Notification Parameters and Conditional Control Parameters may be present in the same query. However, they are not defined at multiple prioritization levels. The server sends a notification whenever any of the parameter conditions are met, upon which it updates its last notification value and time to prepare for the next notification. When Conditional Notification Parameters and Conditional Control Parameters are present in the same query, notifications may be subjected to the presence of a Conditional Control Parameter such as "c.pmin" or "c.pmax". Only one notification occurs when there are multiple conditions being met at the same time. As a general example, the pseudocode illustrated in <xref target="pseudocode"/> shows one way to determine when a notification is to be sent.</t>
      </section>
    </section>
    <section anchor="Implementation">
      <name>Implementation Considerations</name>
      <t>If a conditional parameter is provided with an inappropriate data type (e.g., "c.edge=10" where "c.edge" is expected to be boolean), the server MUST reject the request with 4.00 Bad Request.</t>
      <t>When "c.pmax" and "c.pmin" are equal, the expected behaviour is that notifications will be sent every (c.pmin == c.pmax) seconds. However, these notifications can only be fulfilled by the server on a best effort basis. Because "c.pmin" and "c.pmax" are designed as acceptable tolerance bounds for sending state updates, a query from an interested client containing equal "c.pmin" and "c.pmax" values must not be seen as a hard real-time scheduling contract between the client and the server.</t>
      <t>The use of the notification band minimum and maximum allows for a synchronization whenever a change in the resource value occurs. Theoretically, this could occur in-line with the server internal sample period or as defined by the "c.epmin" and "c.epmax" values for determining the resource value. Implementors SHOULD consider the resolution needed before updating the resource, e.g., updating the resource when a temperature sensor value changes by 0.001 degree versus 1 degree.</t>
      <t>When a server has multiple observations with different measurement cadences as defined by the "c.epmin" and "c.epmax" values, the server MAY evaluate all observations when performing the measurement of any one observation.</t>
      <t>This specification defines conditional parameters that can be used with CoAP Observe relationships between CoAP clients and CoAP servers. However, it is recognised that the presence of one or more proxies between a client and a server can interfere with clients receiving resource updates, if a proxy does not supply resource representations when the value remains unchanged (e.g., if "c.pmax" is set, and the server sends multiple updates when the resource state contains the same value). A server SHOULD use the Max-Age option to mitigate this, by setting Max-Age to be less than or equal to "c.pmax".</t>
    </section>
    <section anchor="seccons">
      <name>Security Considerations</name>
      <t>The security considerations in <xref section="11" sectionFormat="of" target="RFC7252"/> apply.</t>
      <t>Additionally, the security considerations in <xref section="7" sectionFormat="of" target="RFC7641"/> also apply, particularly towards mitigating amplification attacks.</t>
      <t>As noted in <xref section="2.2" sectionFormat="of" target="I-D.irtf-t2trg-amplification-attacks"/>, an attacker could craft GET requests combining observations with conditional parameters such as c.pmax or c.epmax with values that are below a minimum implementation-specific threshold. If a server receives such a request and is unwilling to register the observer client, the server MAY silently ignore the registration request and process the GET request as usual.  The resulting response MUST NOT include an Observe Option, the absence of which signals to the client that it will not be added to the list of observers by the server.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA:</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <t>This document establishes the "Conditional parameters" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group.</t>
      <t>Each entry in the registry must include:</t>
      <ul spacing="normal">
        <li>
          <t>Name: This is the human-readable name and description of the conditional parameter,</t>
        </li>
        <li>
          <t>Parameter: This is the short name, as used in query parameters,</t>
        </li>
        <li>
          <t>Value Type: The value type of the parameter (if any),</t>
        </li>
        <li>
          <t>Reference: The link to reference documentation, which must give details describing the conditional notification or control parameter and how it is to be processed.</t>
        </li>
      </ul>
      <t>Initial entries in this subregistry are as follows:</t>
      <table anchor="conditionalparameters-registry">
        <name>New Conditional Parameters registry</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Parameter</th>
            <th align="left">Value Type</th>
            <th align="left">Change Controller</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Minimum Period (s)</td>
            <td align="left">c.pmin</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Maximum Period (s)</td>
            <td align="left">c.pmax</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Minimum Evaluation Period (s)</td>
            <td align="left">c.epmin</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Maximum Evaluation Period (s)</td>
            <td align="left">c.epmax</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Confirmable Notification</td>
            <td align="left">c.con</td>
            <td align="left">xs:boolean</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Greater Than</td>
            <td align="left">c.gt</td>
            <td align="left">xs:decimal</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Less Than</td>
            <td align="left">c.lt</td>
            <td align="left">xs:decimal</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Change Step</td>
            <td align="left">c.st</td>
            <td align="left">xs:decimal (&gt;0)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Notification Band</td>
            <td align="left">c.band</td>
            <td align="left">(none)</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
          <tr>
            <td align="left">Edge</td>
            <td align="left">c.edge</td>
            <td align="left">xs:boolean</td>
            <td align="left">IETF</td>
            <td align="left">RFC XXXX</td>
          </tr>
        </tbody>
      </table>
      <t>The IANA policy for future additions to the subregistry is Expert Review, as described in <xref target="RFC8126"/>. The evaluation of a registration
request should consider the following points:</t>
      <ul spacing="normal">
        <li>
          <t>Clarity and correctness of registrations. Experts are expected to check the clarity of purpose and use of the new conditional parameters and associated query parameters, which have to be clearly defined in the corresponding reference documentation. Conditional parameters that do not meet these objectives of clarity and completeness MUST NOT be registered.</t>
        </li>
        <li>
          <t>Point squatting is to be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that a new conditional parameter is likely to be used in deployments and is not going to duplicate one that is already registered. To reduce the potential for conflict with commonly used query parameter names, it is strongly recommended that new entry names be prepended with "c." (such as entries described in <xref target="conditionalparameters-registry"/>).</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.irtf-t2trg-amplification-attacks">
          <front>
            <title>Amplification Attacks Using the Constrained Application Protocol (CoAP)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
              <organization>Energy Harvesting Solutions</organization>
            </author>
            <date day="8" month="December" year="2024"/>
            <abstract>
              <t>   Protecting Internet of Things (IoT) devices against attacks is not
   enough.  IoT deployments need to make sure that they are not used for
   Distributed Denial-of-Service (DDoS) attacks.  DDoS attacks are
   typically done with compromised devices or with amplification attacks
   using a spoofed source address.  This document gives examples of
   different theoretical amplification attacks using the Constrained
   Application Protocol (CoAP).  The goal with this document is to raise
   awareness and to motivate generic and protocol-specific
   recommendations on the usage of CoAP.  Some of the discussed attacks
   can be mitigated by not using NoSec or by using the Echo option.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-amplification-attacks-04"/>
        </reference>
      </references>
    </references>
    <?line 419?>

<section anchor="pseudocode">
      <name>Pseudocode: Processing Conditional Parameters</name>
      <t>This appendix is informative. It describes the possible logic of how a server processes conditional parameters to determine when to send a notification to a client.</t>
      <t>Note: The pseudocode is not exhaustive nor should it be treated as reference code. It depicts a subset of the conditional parameters described in this specification.</t>
      <figure anchor="figattrint">
        <name>Pseudocode showing the logic for processing conditional parameters</name>
        <artwork><![CDATA[
// struct Resource {
//
//  bool band;
//  int pmin;
//  int pmax;
//  int epmin;
//  int epmax;
//  int st;
//  int gt;
//  int lt;
//  
//  time_t last_sampled_time;
//  time_t last_rep_time;

//  int curr_state;
//  int prev_state;   
//
//  ...
//
// };


boolean is_notifiable( Resource * r ) {

  time_t curr_time = get_current_time();

  #define BAND_EXISTS ( r->band )

  #define LT_EXISTS ( r->lt )
  #define GT_EXISTS ( r->gt )
   
  #define EPMIN_TRUE ( curr_time - r->last_sampled_time >= r->epmin )
  #define EPMAX_TRUE ( curr_time - r->last_sampled_time > r->epmax )
    
  #define PMIN_TRUE ( curr_time - r->last_reported_time >= r->pmin )
  #define PMAX_TRUE ( curr_time - r->last_reported_time > r->pmax )

  #define LT_TRUE ( r->curr_state < r->lt ^ r->prev_state < r->lt )
  #define GT_TRUE ( r->curr_state > r->gt ^ r->prev_state > r->gt )

  #define ST_TRUE ( abs( r->curr_state - r->prev_state ) >= r->st )

  #define INBAND_TRUE ( gt < lt && \\
                       (gt <= curr_state && curr_state <= lt ))
  #define OUTOFBAND_TRUE ( lt < gt && \\
                           (gt < curr_state || curr_state < lt ))
    
  #define BANDMIN_TRUE ( r->lt <= r->curr_state)
  #define BANDMAX_TRUE (r->curr_state <= r->gt)


  if PMAX_TRUE {
        return true;
  }
    
  if PMIN_TRUE {
      if !BAND_EXISTS {
          if LT_TRUE || GT_TRUE || ST_TRUE {
              return true;
          }
      }
      else {
       if ( (BANDMIN_TRUE && !GT_EXISTS) || \
            (BANDMAX_TRUE && !LT_EXISTS) || \
             INBAND_TRUE || \
             OUTOFBAND_TRUE ) {
           return true;
       }
      }
  }

  return false;
    
}

]]></artwork>
      </figure>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This appendix is informative. It provides some examples of the use of Conditional Parameters.</t>
      <t>Note: For brevity, only the method or response code is shown in the header field.</t>
      <section anchor="minimum-period-cpmin-example">
        <name>Minimum Period (c.pmin) example</name>
        <figure anchor="figbindexp1">
          <name>Client registers and receives one notification of the current state and one of a new state state when c.pmin time expires.</name>
          <artwork><![CDATA[
        Observed   CLIENT  SERVER     Actual
    t   State         |      |         State
        ____________  |      |  ____________
    1                 |      |
    2    unknown      |      |     18.5 Cel
    3                 +----->|                  Header: GET
    4                 | GET  |                   Token: 0x4a
    5                 |      |                Uri-Path: temperature
    6                 |      |               Uri-Query: c.pmin="10"
    7                 |      |                 Observe: 0 (register)
    8                 |      |
    9   ____________  |<-----+                  Header: 2.05
   10                 | 2.05 |                   Token: 0x4a
   11    18.5 Cel     |      |                 Observe: 9
   12                 |      |                 Payload: "18.5"
   13                 |      |  ____________
   14                 |      |
   15                 |      |     23 Cel
   16                 |      |
   17                 |      |
   18                 |      |
   19                 |      |  ____________
   20   ____________  |<-----+                  Header: 2.05
   21                 | 2.05 |     26 Cel        Token: 0x4a
   22    26 Cel       |      |                 Observe: 20
   23                 |      |                 Payload: "26"
   24                 |      |
   25                 |      |
]]></artwork>
        </figure>
      </section>
      <section anchor="maximum-period-cpmax-example">
        <name>Maximum Period (c.pmax) example</name>
        <figure anchor="figbindexp2">
          <name>Client registers and receives one notification of the current state, one of a new state and one of an unchanged state when c.pmax time expires.</name>
          <artwork><![CDATA[
        Observed   CLIENT  SERVER     Actual
    t   State         |      |         State
        ____________  |      |  ____________
    1                 |      |
    2    unknown      |      |     18.5 Cel
    3                 +----->|                  Header: GET
    4                 | GET  |                   Token: 0x4a
    5                 |      |                Uri-Path: temperature
    6                 |      |               Uri-Query: c.pmax="20"
    7                 |      |                 Observe: 0 (register)
    8                 |      |
    9   ____________  |<-----+                  Header: 2.05
   10                 | 2.05 |                   Token: 0x4a
   11    18.5 Cel     |      |                 Observe: 9
   12                 |      |                 Payload: "18.5"
   13                 |      |
   14                 |      |
   15                 |      |  ____________
   16   ____________  |<-----+                  Header: 2.05
   17                 | 2.05 |     23 Cel        Token: 0x4a
   18    23 Cel       |      |                 Observe: 16
   19                 |      |                 Payload: "23"
   20                 |      |
   21                 |      |
   22                 |      |
   23                 |      |
   24                 |      |
   25                 |      |
   26                 |      |
   27                 |      |
   28                 |      |
   29                 |      |
   30                 |      |
   31                 |      |
   32                 |      |
   33                 |      |
   34                 |      |   
   35                 |      |
   36                 |      |  ____________
   37   ____________  |<-----+                  Header: 2.05
   38                 | 2.05 |     23 Cel        Token: 0x4a
   39    23 Cel       |      |                 Observe: 37
   40                 |      |                 Payload: "23"
   41                 |      |
   42                 |      |
]]></artwork>
        </figure>
      </section>
      <section anchor="greater-than-cgt-example">
        <name>Greater Than (c.gt) example</name>
        <figure anchor="figbindexp3">
          <name>Client registers and receives one notification of the current state and one of a new state when it passes through the greater than threshold of 25.</name>
          <artwork><![CDATA[
     Observed   CLIENT  SERVER     Actual
 t   State         |      |         State
     ____________  |      |  ____________
 1                 |      |
 2    unknown      |      |     18.5 Cel
 3                 +----->|                  Header: GET 
 4                 | GET  |                   Token: 0x4a
 5                 |      |                Uri-Path: temperature
 6                 |      |               Uri-Query: c.gt=25
 7                 |      |                 Observe: 0 (register)
 8                 |      |
 9   ____________  |<-----+                  Header: 2.05 
10                 | 2.05 |                   Token: 0x4a
11    18.5 Cel     |      |                 Observe: 9
12                 |      |                 Payload: "18.5"
13                 |      |                 
14                 |      |
15                 |      |  ____________
16   ____________  |<-----+                  Header: 2.05 
17                 | 2.05 |     26 Cel        Token: 0x4a
18    26 Cel       |      |                 Observe: 16
29                 |      |                 Payload: "26"
20                 |      |                 
21                 |      |
]]></artwork>
        </figure>
      </section>
      <section anchor="greater-than-cgt-and-period-max-cpmax-example">
        <name>Greater Than (c.gt) and Period Max (c.pmax) example</name>
        <figure anchor="figbindexp4">
          <name>Client registers and receives one notification of the current state, one when c.pmax time expires, and one of a new state when it passes through the greater than threshold of 25.</name>
          <artwork><![CDATA[
     Observed   CLIENT  SERVER     Actual
 t   State         |      |         State
     ____________  |      |  ____________
 1                 |      |
 2    unknown      |      |     18.5 Cel
 3                 +----->|                  Header: GET 
 4                 | GET  |                   Token: 0x4a
 5                 |      |                Uri-Path: temperature
 6                 |      |         Uri-Query: c.pmax=20&c.gt=25
 7                 |      |                 Observe: 0 (register)
 8                 |      |
 9   ____________  |<-----+                  Header: 2.05 
10                 | 2.05 |                   Token: 0x4a
11    18.5 Cel     |      |                 Observe: 9
12                 |      |                 Payload: "18.5"
13                 |      |                 
14                 |      |
15                 |      |
16                 |      |
17                 |      |
18                 |      |
19                 |      |
20                 |      |
21                 |      |
22                 |      |
23                 |      |
24                 |      |
25                 |      |
26                 |      |
27                 |      |
28                 |      |
29                 |      |  ____________
30   ____________  |<-----+                  Header: 2.05
31                 | 2.05 |     23 Cel        Token: 0x4a
32    23 Cel       |      |                 Observe: 30
33                 |      |                 Payload: "23"
34                 |      |                 
35                 |      |
36                 |      |  ____________
37   ____________  |<-----+                  Header: 2.05 
38                 | 2.05 |     26 Cel        Token: 0x4a
39    26 Cel       |      |                 Observe: 37
40                 |      |                 Payload: "26"
41                 |      |                 
42                 |      |
]]></artwork>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Hannes Tschofenig and Mert Ocak highlighted syntactical corrections in the usage of pmax and pmin in a query. David Navarro proposed allowing for pmax to be equal to pmin. Jaime Jiménez, Marco Tiloca and Ines Robles provided extensive reviews. Suggestions from Klaus Hartke aided greatly in clarifying how conditional parameters work with CoAP Observe. Security considerations were improved based on authors' observations in <xref section="2.2" sectionFormat="of" target="I-D.irtf-t2trg-amplification-attacks"/>.</t>
    </section>
    <section numbered="false" anchor="changelog" removeInRFC="true">
      <name>Changelog</name>
      <t>draft-ietf-core-conditional-attributes-11</t>
      <ul spacing="normal">
        <li>
          <t>Title of the document changed, and conditional attributes are now called conditional query parameters for accuracy.</t>
        </li>
        <li>
          <t>Clarifying decimal support for conditional control parameters.</t>
        </li>
        <li>
          <t>Text for error handling of type mismatches added</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-10</t>
      <ul spacing="normal">
        <li>
          <t>Rectifying text and a table column in IANA Considerations, that version -09 erroneously omitted.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-09</t>
      <ul spacing="normal">
        <li>
          <t>IANA Considerations section updated</t>
        </li>
        <li>
          <t>Editorial and formatting fixes</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-08</t>
      <ul spacing="normal">
        <li>
          <t>Various editorial fixes and corrections based on review comments on mailing list from Marco Tiloca.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-07</t>
      <ul spacing="normal">
        <li>
          <t>Expanded how conditional attributes work with Observe in sections 3.1 to 3.4</t>
        </li>
        <li>
          <t>Addressed early review from IoT Directorate</t>
        </li>
        <li>
          <t>Security Considerations section expanded</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-06</t>
      <ul spacing="normal">
        <li>
          <t>Removed code block from Section 3.5</t>
        </li>
        <li>
          <t>Added an appendix containing pseudocode for server processing.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-05</t>
      <ul spacing="normal">
        <li>
          <t>Multiple (mostly editorial) clarifications and updates based on review comments on mailing list from Marco Tiloca.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-04</t>
      <ul spacing="normal">
        <li>
          <t>Reference code updated to include behaviour for edge attribute.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-03</t>
      <ul spacing="normal">
        <li>
          <t>Attribute names updated to create uniqueness for use as conditional observe attributes.</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-02</t>
      <ul spacing="normal">
        <li>
          <t>Clarifications on usage and value of the band parameter</t>
        </li>
        <li>
          <t>Implementation considerations for proxies added</t>
        </li>
        <li>
          <t>Security considerations added</t>
        </li>
        <li>
          <t>IANA considerations added</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-01</t>
      <ul spacing="normal">
        <li>
          <t>Clarifications on True and False values for Edge and Con Attributes</t>
        </li>
        <li>
          <t>Alan Soloway added as author</t>
        </li>
      </ul>
      <t>draft-ietf-core-conditional-attributes-00</t>
      <ul spacing="normal">
        <li>
          <t>Conditional Atttributes section from draft-ietf-core-dynlink-13 separated into own WG draft</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="C." surname="Groves" fullname="Christian Groves">
        <organization/>
        <address>
          <postal>
            <country>Australia</country>
          </postal>
          <email>cngroves.std@gmail.com</email>
        </address>
      </contact>
      <contact initials="Z." surname="Shelby" fullname="Zach Shelby">
        <organization>ARM</organization>
        <address>
          <postal>
            <city>Vuokatti</city>
            <country>Finland</country>
          </postal>
          <email>zach.shelby@arm.com</email>
        </address>
      </contact>
      <contact initials="M." surname="Vial" fullname="Matthieu Vial">
        <organization>Schneider-Electric</organization>
        <address>
          <postal>
            <city>Grenoble</city>
            <country>France</country>
          </postal>
          <email>matthieu.vial@schneider-electric.com</email>
        </address>
      </contact>
      <contact initials="J." surname="Zhu" fullname="Jintao Zhu">
        <organization>Huawei</organization>
        <address>
          <postal>
            <city>Xi’an, Shaanxi Province</city>
            <country>China</country>
          </postal>
          <email>jintao.zhu@huawei.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1923Ycx5Hge39FunmOBIy7W7iQlAiLskASkmDzNgRoeS67
PNlV2d1pVle1K6twEYU5c/Yb/LJv8zAv+w/7tPsn/pKJS2ZW1q3RACnZHhPH
FoGqvERGRMYlMyJqPB4Pzg7E/mBQ6CJRB2L4OEtjXegslYn4x1Lll+KlzOVS
FSo3Ypbl4nF2+FK8mBqVn6nhQE6nuYIRbtRtEGdRCi8PRJzLWTHWqpiNoyxX
8B8/zFgWRa6nZaHMeHd3MIhkoeZZfnkgTBEPTJEruTwQx0en3wwk/H4gDler
REMr6G0G51n+dp5n5QpBe3Ukvoe/dToX3+KzweBMpaU6GAixlDo5EDj31wjF
JMvn8HSui0U55efj8/ln3WANBrIsFll+MBgLXs4jnSxkKlNxopMzlcs/yBRG
gzEPxKlcrlSuxOtUwxuji0t4g6tQxYH4rUzUmUwLrcRdeBzBW98D/85iGPzT
b47H+/u7Ozuf0qMyLRAZ3+g0kWkMjxSvZWphmBgPw9dFmerJTHs4n+loIVUi
fpsZIJAD8Uk2L/Rc5eKpnJoAunt7d8V34oT+8tAdArRZtBiJx4cewgd37+08
CIF7fXJYAbbkSf+QLdK3NO/Xc3wxibKlB+wwQeRlSXYuLxksmeofiKYHwFcy
gcZLcaqiRQqN5lqZkThOo0kI7eef3xPPgHCLrDRKPMkB3x7qExj+iQY+qmDe
293b7YVZGobl6z8WevJHOz9BPACeYEYIGeDxItem0DALMNqZMuHAhyWAKBMt
RTV+lM6p3QR4ugMd/yyjhThZqGTaxsbhq2d+Wb8rs7fAl3otY/wAg00MDfa1
zJe1iZ5B74VWpfidlklrqhNAt9KxysdHiYpg1ZGf+dtcpdk0UbWZc5lGKiC8
HXxyBoN/bfxgyg5Wg+Q3Oi1kJv55UbbA+K6U50r7qX+v//zv/1umI0CQlOmF
Fi8BlZpn9rA8XuhUVqD8gUaf/LAov17QaDg30mMwSLMcAAVmQbHw6pvHn+/d
23O/3r+7a3/9Ynfv/sFgMNDpLGx/PH4y0TlIsWKvyOdj2LmJnllhhBJDRm/N
gbAv+c/BQMEWgoVA95Ojp9+A7P0XmGD8e/j5H8PBYDweC9iHwDJRMRicLrQR
ZqUiP6yI1UynytRE7/OsqBoA9fFlkWcdMhnWvYJmQDpxDtKuJp/Fll309oTh
WOo4BhoP7sBmg+HiMqIJ7M+7Ozp4ejUYoFAGeQHzyzxm8Q/9VJ6qQmQzAWtJ
50ZsHWen2wjHEqSTBVmn8CDFRcPSYqHSM51n6RIwZex6RbFQuCrfJhD7yAFF
FsFyt3A52+LdO0vIq6uRkOLV0cnprEyEDLqsbBd4b8S5ShL8VwrDoOYqAbUT
C09u6GH8woqFLIC7L8VUCZA1sSgy6LHKlQGA4UW0QIBjWUiihXsAFJD0EFaL
IMG/gJyZjEAOiPcndUPxohBsU5gxAyS+upogXU9VvtQkUy8tTYvqyRUCpcRb
dSlAr8LCh89en5wOR/yveP6Cfn919I+vj18dPcHfT747fPrU/zKwLU6+e/H6
6ZPqt6rn4xfPnh09f8Kd4amoPRoMnx3+E7zBVQ5fvDw9fvH88OkQ0VcgrsCa
KJFFBNgBSAKgBmEUCIG0k2YQKxOBrCZCikePX/6//9i9Cyj4BeBgb3f3wdWV
/eOL3c/vwh/nC5XybFmaXNo/ge8uB8A5SuY4igROieRKFzIxxDtmkZ2nYgEa
ezL48tcJEnp8/9dfDToJmqs/lhr4BH6RMVKKwZ7JpQYFkTPBcArkdqSEIXBg
b0RqVVjOw+XG2kSlMbyygN2peUhkITrAWMq3AANyCPA6TjXLEtB3aCjJ2HNa
wAkg+mp89wimOQDpCeoIlmKyMo+UOJNJqQQogbliQN0emYJUjgHU6SXsMBhS
L8ul3RkX9Dv3BKZ1myp1XRbyDKFSgBcwUKre1DboTMy81hj1Qisw6t6s/Pur
tRsw6CP+SCNXPcUWAgOGhzAa5P8lcHLYvGrY5tzt5k4Fi7Vrp9ZWFsy8Qs0X
A/kAyPHcCsbIygMgbdqUFeYyjRYgWa1uZVFnyQfyrUBJdMgSI0o07i0Y7Uxd
1jEQQAAbwIu10iCpkJ0YRahqshQHgWkkj/r61THO0Dka7KsUqe9FKW1i6DlE
E+Eh0XnYRD9yAuPdNRwSMrMSNorljesmBCBpI5xnApyF2Bw0OtTQ6HuPcGpZ
a+hQ79tMxLMyKfQKtG0PAlGktPCFO9wobIU4YKEA7dAvMCQMPxlOwp23lPlb
RhZzj0T1DiNrEBkgkd4KFoQrWoCVwaZcrbK8QHqZPujAvu7aFdIYYF8rjXBj
KoIYuFAXSHz0aCyDqdkMjD3DnG/lM84BqFMX9vdyFSPnoSzENlaMOCZwPEXs
yZzk1v2rCq4E9x1LxwZHe5lCswCSoEl6KQq9VA6zlzinjh23fK94UTPc0/Is
gzfYBomr0xK8izF1JiwQSv3yQjRbydq3b1KU3OANyZj2PzZdLXIJvw4NmpHK
gjNk42IG3Aq/gABUyyly/YyMFWAc0Az4FzWumyYO2bA1MhYqsZjlYPfiZA0k
gTOSE05QkN4RL+DPM63OwabzW9cKBG14YGXYQIKxCxA8pDus4uIhPQXZNa+T
jgGxIxNsObIvKlsB7iKokBGjz09KPA0oiDNhMlQlLG5C62YiuqFlNNehzlWk
NOkW0vXdIIPRONNJgq0ileMyKzMVmHrLlOCnkYiyeumzmlLaHsEOJCHjgQbx
QrsIR+yVqC0NY7cyWg+wAGaEAHMjMlXg9Vyjf42D66IiExMJmxKRPA0mbN6V
Rs6JhXoAUsCN2SXRhiRhl9pATfQHRX7ACKc7X4DTHxLQgs6jWHrDMmw3ACpV
53Yoz6JRmefc105VJw9sVFy1dMMxRZWhFTKicMta3uxZnGVDhnIUQrdEGsP/
cTwLJnBOY9lOSLtxGq8tHFaGo0rqkbOCSbFUyPvaLJ1mUherhLW6lTCVoWZK
IGlUiR8yFokwyAW5ZFpkoDIq9R+hg54kjL4B7fRXQXPY7dZAURckgxAhuVLM
ayqNVxnxPaknNHvBzybEGVBGOP4jetUnHgI5373drLnuJL6j/+MXeyJRZwp8
NWvwWFOSwDohck0I9nfvZno+BgyMmaBjiQ4gwwgggqA1dXeIZCvvmtaWqSQE
yrWGkkKYGsT2fOsh+jf4GfDsh87+tNA8Eu0f7jeA3/78p//VeNd+Er66WZ8t
gn7bdfr26FR8hk9uMNFp9lYB9Xcu7u5t3MfiHHptNs8v//ynf7/J//7vDdt3
/++rG6NT3IIEm/fZm+zcIxcfWXjTeULybNrHk2d3wz4v5WWSSXADh/d3doZB
ny9/fqrB/3759021vf2bUu2Lv12qsWR9dyDuNOW9oPush0Mv8514Z5Pb2wjo
8tXcOmeuW53DIp2PgpyAZxUwGV6B5rTjPwINy4o5owOKBdn1TQu5YWtK1t3k
Fju10lQeokubTQNt9ginidVKk1nStoWtb9Pj+G6m95x31VJ+O9cqP3Hqf3dK
mw2zUOP3Iz3KFU1Y+z2wEStzs2b1Otx8Wq3ob0YN/3QTXdfHGQC/jibz4uHu
zs7O9X28rLp/f+N56gbA9X1uagB0/++nVOjvJ+YBdTcX8zvVq1duC57gnriN
6Pdv/HbqHeVG6qFf3ONok9bPjenzy/F4/NWkybU3H8e++gAQNV/9dYzQqyin
DUX5KFCUpDm6HdXRbbWobAtu0F8s2mNWqXTu5NxVcudITeIRV8HiXFp3Fw/N
WamQlgqUsxkFSggWkiTu2E7Z4wY6L0eHrtYNXzqTAU9TdKJEgBm73HqX4HCo
dtDnT0vZTe09BEQH/KNqur0463+1gTi7ZpSPIsr9NFXczUdo+jW3GKFSfw9u
MUKl95AEw94R/kIe0C3wse7Vz05VNmNuMULDd73hCAFVd9dRtT3ChzFl/vyn
/xyHP7fyZG+Otb+u/bj/U1Luv8t+rBth1Yl8zQKrjtAr/xv97IbNUXezR9VV
dxqvt9vAF16hTjxTySXbW2BuPQ7uAwaDQ3dZQ5eI59os2DDiWwO8gVYXGOUI
kIWXDMEFF15mR1GWx9iD4Tmx1t7+5D5ah7WoBrqts3NW0+Gdh44AN5fXzowX
asaUfK2Fbqy9cKF7N4pRkgmAVcW04E1fucJgATqzyfVcI6JevzoO74rW3Nsy
aqSxcREc+xXcGsVl7kYIIZ1wFE54ZKPdAU94KXN1xUHT1vT8aCLWX300EX9i
iH5WL7b/3GnTEfpPoTYdobr1uM0qPswJVduYAKYIf/66yVj9/OWtysq0ePDf
wyZ8f9p/iBHqFkyosFrHSC3tTQckfRqcLJE7d/oDnKsAzsFgg0ZhsHhwIMOB
aqDt5xREGh5ZTTaZ28XMYUQGRvZQIFnGwcCrDNldN8IETTMihGJ06I4InmBM
IGCCm6RVVBwbEeMYc1dSQXFg2G6VZ5EyBoPmqEsjci4IrgltERdUYm+aNsde
LDikDyNNTGWhoSVo4xsX2TkMWVD0Te38Txt3WhaTSYoNlxQk1bz6sfEzYLwm
sY34omiRPObrqT5qvUg5UBhj8zZZ0rPDf+JYuCgpYza7AOPuksxibrIZc1Hg
tUXRVAF2DgaDH6sGfr/8KJ7DE/jndxTKeHq5UvwcWmNaRe2/8OxbOgbNwUaU
qRsBdaIf7sIcxCrSS4DND/QUOaLqYTsl6zs9ZkSfFGoVdDKdnba+2tmmTq3I
b+o0xV+401aapWq7khfY6Sieq7oUwU7KPaWZplmWKL9kki8hsUOz20qZ64lk
XZs7NZxuITa3xbs78+JqQFFjlhdHddzb6DzFYWrgKMCLRC/BmeCgVNpcYXSm
EwxRngE1phwyalmXvZI69x62tguljGD4nqKQuNYENLIFqDpXboE24pQVzTFN
2DiRBkPnMMbXDcan95RagAGs6GkMo8lqqdOhWIBPAyOsMKXAYDZVNUh9Cact
EN0qbIhavfnxLAjqdWfxJKlybQCiNGvITdxkc0AHxz5LvjVGiYlCbIiEHDZG
jfNsZXhD9tOtS1QxB5hyyjGIc4zvtNjzeKGYWCtJa7xSXaaTowkyxkZUs2pw
ct+4i3gTyUTmIi2XwBqRizUmXq228hbuYGTUpMWoVaM6l8KqO7i0kZTxF2LT
Fmx/g2w6QyV/Yy5NWlyK7I5RzNmZ6qdbaqMc1nPqOh6t2OQDMmioNrZQXyCL
mhaL2mYGm1VM6m2AnuD+VtSsY1Ye7TpuHXFKY14dxcDYZzorTWPciXi9yji8
xUfou9QLNg/cyc0QlzgMMz06w5EbQayu9zIjjo7gER43NXnQ8brn8pQsNGn6
toPYwodv4OGbs+0q6Lm6G61PgQlFbBbay9gGvLGezXzkc3tKboThtZhwgum0
IzBxjaY9C2Onak77dyTmVhoWyGyYz4F50kgDRt8H2MWjHpntR+7CFrRxqR6W
H3BDteK2+wQB7qEo4GO3d2qr/UHl2YhDvs61cRKX7F6723JVlHnqYpRVnsPy
MfFc3J3s7IjhIxmLV2x7Dm0YfrjHPsjWpZQ9rLXAd9/em6CgNvJEglyGkVCT
+WTkSWRZ3tvljSyxyspHJJ5nNhWlww3CXBRmOWQqMtsJhcwklG1yp21gbrF9
iWIG/7WJqO12FaK8t+IyB3Ef+DTCrak01mXrSCHcbqcuItjOBVm6FK7ayuyR
rkoxMYWTKSOJIv6cvCdeM8kLHNU49QD44ldIiqnC/EZA7ER8QxlRNuoeGi2z
VBeZP0wu1JLuDcqc9rVNKc4vOVjBFK1G2lT8naM5b+8d0AHn9BqKRYSHOouD
ED9UbKlSgLSJ+A5UVJWYUxt+idULkK2IonJqJ+G1jvjpLHcCqnaHYbOTjPMp
+foDOOF7n7ZX2/TIACgJgFNTozmXgQ0ZKZqWE+XkdZn+rGdpyU5tt8NXXLLs
EpwSe2igKYUIGqEQNNrlINm8YnSOMWWLSd7NJzaZD9GQgdLHDWhFPYFEyRYR
I5y5fMi8H+gfzL5+a2yiEVALbKvcCTfPQpV5zPnSzgYpmDfp6oEzepXNb8bb
k8JY9Y0nFAQYNAziRClRGKwfaw2curw44NFZBal2oxRBPuPIgjOysBBtpiB5
Rl6qOa8ciY9qrWtAEnE8gpiWhb/xcoNXthRtdlI0TbFOPIRuavORlQXbjB7y
7Cc1MQNMEoHi5wSrDsMayef0HqaDevOudy4cv567bPhszEOOrdHwuhYl8zZK
EocSdoJugxInEz8QSiq/rHcuRokVy/0ooWTEEB+Vo+EMAmsC+Z0AjRIUEaRy
aEN78xyl7JigqEew4dpIuOPuN6Out3VHqL38qSrOlUVOa0vaBY4CmzO0nLAx
m0q0fW+35pqx0lw2cMo4m73P0nuWjVJys6WDxOtZeiC6rtf57+3X0CHVFh9L
oa2B/14NGl4NLoUaVhNXzo0PnEdOrW7u6xoAkG8LGFAKn+QzcToLs/wNzqF/
FOg58lDcKVnTm/neUcIzgEU6jhJqDyDNjtj6RiYGM1KDy2qG0nrt9pRXYekh
zm9uGs1sDVrP4TRns5KGvRkwu2ILe384WAgGBAaHdY5wx9yb8YvDt68rUb+e
aJdbqR8ed5RjCS4laDXENDB8JSnQEldRSU5Ww3qoqtMQZmTsMr7xT3sb0ZVv
foNbjw6Qbf6pq24Do870vMx5EZveV1CcrsqxhA5xtwfWdEBbSw/vP+fvgPU2
R/wdw2x6ul870qaD/vZJf+9R/zOr5V6S3S22zHZtOPa+1p7GP7Omw5oR5MX6
ESwMRxXzVIPRKX0FxHoY1o3ggOge4TEyFLgMaFDXRLxbRVTVmeq7K7C3Ueuv
CdqEdjcETVIw7lEN4L8tNdBoXj+EdcYLbm9y32A3AxCg6rxCPM/W7PItdzmY
kSTsOrfBMxOWevE2H1N4xSvFLMnItxtThjbquikeW0mXLI470ZTTMYOFi4pA
4wCKt9jt35ncozYLmXBhCWoGD3YmO7v0ZncHFgmKyy5s20ZvubCnTLH+d1VF
gsm8tOOoLNisOVmllbYoV9VRjSRtWkloxEJS2kNaVjFyaioZGLoroxotVpZQ
Jhjf3Yw2iPmzHPIcOmQhCuwRXQedSQv5w6362R6bchGdRMZhrJk/WXPIBtrP
CmtwtF7iJT1WoUJVWTsjWlPBZVSpL8fS7YOeJgr9zAr1gzcdG1cHVpXjwnXa
DfGkeoTz2EpRbHB6JUVqqKGgGiqJz5uaIpRlJu98edHe+fXmjZ1vX9565+dq
LvOYvBRg6I9y4MPJAUuZtXKgTtpeOUB+Sefb8OC7qVH0zDHR9ocUJIHu6lDA
Vn2TO7NWkbX7bqrTAhMd1pEtlyqNG8En+Ne51EXvLriBMTgK7gjstLgJ0qyW
thzMHWfI6/UzyGC+v9Nd03bR+jnBKohAifhLtQqRNf8NIdPACbEGBuKDZbT7
7X1m1emmWjzwcKqNjLhypjofg5T8kFSBTbpze/y0DiQehla3HLBF7UAjPl+d
l5qj1zNf0kujsg3gsD7YZA3+fhaDItBkfXKAtZpaq9aulQO9Gq5B/g+13z/u
T7c/eyl0i/2J/PVBN6gF7v03aP8yb6GP12jGn04d93qzW+TIbnPV0cYOdOdN
ntzVuVjveOHOlK2bMoeQqOoOXDlRkzYnAABx+1CeLm+C3oyAJdimkgryZb6y
GkYHRG/T7DzBQzaqwlvVbSMdbRm6b7HBieQGq20s1J5OhZCSwZyOO5ZuS/BN
q1t/2ewpm31rC+czwKqYCToSVMylHlR701BlW7t53ZGU9amCuzXrPtkSq/6K
lssU8+VtuPWK6lJyBZsg196to4JqpqYdDZlxDVT7qw4sgWkFd1BAtRLhODc8
HIG8y1wBQEC9u/WlUqTNAA/LDiQh0LOkFH0sqaeqOyt10QztIr76QBjGqXrR
O+p2cW0YVi3gyItKuX5G4UpGen/WxcXIiyGeemKxzlZVhfrViy23umxVlsXz
ZLJ8MZ6oqBbD8WGHZN7Q5XcSFvgD+I0q44wkHChB+lyBz1Cr3l1dUdE/vjY/
x/iIrLpSZuDa4Tpc3xrRO6ESD+IYp136MHCs6I4fBbAYxvrM9RZXtgRpdx0j
7WsgV2VydSpX8BD4ncKdsDJxgeeyWz7CBUXWw92dob239zcFdBe/8qSlytV0
6rjdFqC54lC8hT9hZgBIRQQaIrjaJhq7Gy4mPtKR3EeewM9e3eprK+rrnEiV
LZxEw+156c4vxcOHwp1nWGumLiVM8wQChSPHAyhX06KpozlwZoqLVLMZWkBT
aTQM/EhFMjSoq9XRUnO2n+epjZGMMPTOFnJNFH0ugq+o+a4ABVBHRQ8XpFdL
l+DiWlWRape7yc54Nzz2anlZshhiBCLb4s5YyBztMZlwdV8TLVRcJrZ0KH2N
oXa5aWd2l7DG1XxEeRoUVu8NA6jVP7fBSzNSRc0a3ZUEDuKxOm5gq+tbBZ5v
URVFxkIrlGbB9/Y6HVOVen/QaGlcPzRTzprLKP7HX4xc+ou9GoJVDcO4ECca
qnTYENpJJQiyKr8mstLAd2Db2AYkuVBQYozmsC6ArfOlk05hBBMwmwEw62eQ
sDzwCcApiNUcC5/iJ3tKvLHkv91m9p4BnkN4Ocw1dv0OBexWQWBLJQ3MSoaS
9R/NjfHa8rhcMhIlItWnJ9urunsjiz2AATVVyqom6DfZuAh+MyU6vC9sf3WC
g74BroVeVZeeQZ1mp6t9SeNQaHGUFJ40zVNNZ7227nhN8WbBhSGI/wu8S3Yz
yXC7euJFTpYgjWz2vIWmusn3LOTFkZ5xReCLy7pjCBK0p1JxEDXh4p+XVFm4
TO1JrlNOHFTFNKdg12LUEDHWSvNM5+yrdlyGvSjPbBVjbw1waWoM8rcj2s3n
ypCDOzY+xNAEjpLGGD+g+pyvKzAsBHgVAKNN5tqytqxCbRrhwGzdsAFwokAI
6eKyqfrf3QF1hQLgyqWt2XZRvR1ZJa6qwO4ukj74+gWSAa81DoOUf7dtNhjv
czccVSiw1QNW9FEH4HiQqWUic6wekJ3Tl2AsZiisNvz2j7Af+8FrH+IQZ065
ifYmezjVJt8Pom/YuBHJ5qaUOfyCWljzgD7tM2V525ZEPXvXWaP21hj9XHt3
S73CovKozDmWqwqh1TVTbezrRWLVaLAVk7h+jlIV0nIpgc6Z5OP59NzV0wrK
UyLtbPn6vKtON8pBoxOOtgdTI8udSx8UighnctEJ2CjAH6KhNCXeNZFTVKVp
YukMPMkS7qs3LtQgDDN4saqOXIKTE/aD0ATCcA/rL4RlNnTBxpy1R2QcV35F
giFwKNrs8k3j5IQN6sPnh+29pGUq3SdN/HdyFjaIJPjaS1BRDQfi77zQfoZd
II5ijEE+EC/BCDYk1RIZWW3Dt5CkxzC47N27T/BrVldXw8qwwCH4sM4fIjU+
JAHkiFWirGghzpzncrWYNEEHAoHdaGuEoKLs/iLK0JH9snad+Dj4bpT7GNRR
+I2pLfz0ynYYJFANRJ8TBICOMBpJ4efFKgPMNiGL0jIFoPAfKCzkwNf8wLaL
cinTMX72h+xf/FCJXf5mn4wYwagevPrQsNPAIscRR8zELGyaXxHAEaowlYPg
kJXco5Zvj+dlYCNsY79XiuyYyHajb4q471IQqztC2YNHZntCyxxPf8EYlDpp
V3jv+8gKHbg1vqXiE4rZHmCVYzczhRAPjlNNGQhIJK2M/9wOOOyeVCjGpLFb
wFCID8fw9PyEEUAdYT4ubcM6+gm18tjiMKDesWmAcefvfU8aPW4SUdQRiEOf
0WwOj7sWP0YnbhZudMvhN41Fej/orw1Uut3wG0cxdYQwbTB8Oy+8gXuXIt6R
7L3B8O0M8sbwyXsN3841bwxvuobfGPftwODG8C5BvSM/fYPh2/nrjeFdKvtt
SGuj15zsq2T02MspG8r2XJ33HDJ77cPFU1EskymwyhIdXZJGn5Xk6bryV9UV
fSAPQTweXYCjWIDUwi/+jNgrDb6bRyW78PuXWLLrtBV0KmuW1sBZU66yQ+jR
V3YHf0iEVOVjsKjRLOfv3IFJERWpDYYJBwaHkOHkM9vwnC5aqOitNax4LOi7
KvNVZljHhucxgM81n2SSxmSRptPPlvq0Sm0hz5y/EwHN0RtwTrw1C2gVaDLG
bD126sjeb7qRVRhTvjF47Mp9oCujM2euujvzC2WkoRVeKMKaN1GnypvQqBzB
eKC7UwNeGbtuXoXipwTBY5RzTPRgJnAn4wC2fYNt5wod3RlsOv60UvBtTI5+
bxvcXNAtNRw5LN2HfnoPcxP9VpF75Q8TMF9O4QeIlv6YwN4vzjPrKsQlf9aT
P+TGVjW0TNDYugyxIE7RZIlLG0tSVW6Zsb0xg2EK5y8tl3QoSkA0vzmHtpZx
BxOw5iydk/dvY2HcEQVdrJLBSB3sVc6KW7gknmH1GSlntzS233pJcXXlvtY6
Bf8QPYKX/sj+AOucueuqHjHy7k5wxG/NbvzcJTS+4CxC/8VbzCbzwBmLQ5sV
h19ljpA1F+Qhmtpt2ZrDo9YdAqaqKjqmqVmE9M0rd7PowhZPG5cXzBjqYiHB
8uRYu9xJIopNEAVXnEZsVxsTO9u1YXE+U/tCQ69F3qBT273x1fsGn32GXFJG
RVXB7h08xOd0xUAnw7+iP3GToskT/iUvqr9U/aWqvzVF9fs8+D2xv9N/8Hz7
TUG3cW9sKOYbfPar1lvMOec3fiT0+t7Q0VIAYa7O7DNBc9AbrD/Hv15B/4FT
kdq8YcKi1bRVIeQfRC62AS0DDwJNRYfxD1H2vLEJ+PRoa/tX2PKOTa14dPj8
yZuj3x+fnJ6ILZGPvyLlvx02eXpaawC2zXbw9tv62zm/FUGLo5fPjp+/OX31
+giaVKCNabAmKsVXD/E5G6/b9VEOf7/5KHYQMFEJnBCe68BxafEhPC1wroOm
MQiPQdDUMWuHgNcVf4gvLZ7/J3XzPOKfN/DfOcZXlhrNMb7yVAoGOfGDyKlp
jjRujLBtcWIagxw/J2ayA8EUX8LuEZ98Iv71Xwc95uAWtnoYbA1sHiLiIQ6x
Ha73xevTF9+EEyU40fyaifxk4eg//liby09V4xacKmAYJsCXD+s42m528MzR
IOxDxj7gDXroWcBG7zzoNogGxB5ICiGuHETU3EHimsPDX4R7+F2AAXjnOAyW
+m31qyP3uwa6GjO7n6tB/V+FSWO+L8yyJbZqaAJS/MLLhW2csU6YrRqOsPXT
Na1rjNV+22CI7fqqupYUrucKCWEbzTCshlsNruql+8D0y1FgW+eiMhToZt+d
yrAqtx9ZcNZDtwrkXJojDiYwgw3MB/8xIJMtlQtD8CGB1lLvNlV8RQuslTDF
eLfi0pYx4OutYsH3lf7A1lkF/I1ua54v6NPbYqZVgqdGfWlAFrTBuPfH4tZT
0H1jVYjHT4+Pnp8KcXL06ndHr+jtYVSUMqHG6PZSAVtP3h9r/7jXfuQ3wU/Y
OHxOjetFTMOR6TV94q9MMWwrrb+m/+5+MbknHisGcr811C+5NOmPrRfiO8Lo
AZ6mU9+7HWDgSbvo6BtUI5fU+V7vGprPX+d6/FIWi4PwXpfGuN9s2jcGDkFf
Cj+wB2UPh7s7Qxrj843hCD9stOXcDZbAX/QOQq8fiBZxv+TCoa1+HslYZBU7
7+60mvzIFVg3wPIucYoj+Iare0A993qX1HoRFHqHmQitu22+6ufn3S5G4n/o
9TWssrfvuHm3nyHodT+t6fV6Ku4+uMGS9pBqtyX5Xtf+Dki+d99TU7RIvrfX
anI9yfd2qOs6ojV+Kprv3SeK760n4l4/EWuqa6rBa75Y7TYKzn6Qz/vRKVb1
cTmbh4fOqD09J+vXJc2hzuvLIPuoNBo/fwdKQ148HO59VBo9q/uJlcb7qomW
ykEuuDV2u8gfyuf9NfKZtUytyfXY3b1/rQZq/ATyeX/oNVJ3516dE7zup+w1
muM9dYMgXbb29Xqtvrd+m+314xRf76/H2v56rO2vx9r+eqzt92NNcLn3/fWI
218n6po7Yh/ReNsdsd+F5E13xP6DVpPrd8T+59j1bj95Wi9aO+LueuLdXUO8
Dotl7wNaLKMucyW0YtIgpLBhxsiLthnTVSnvZibMZvbLzYyXzSyXdUTa2Ga5
pcECm+z25sp72yq3M1TmxcM92JPvb6Gsk5u3tU3E4PaWyS3NkvexSdZ6sY2f
wTrzZHPb5NaGCQBwnVnS6zZam+RmPiPYJGuUZ+tF3WFcY420XgzW2SYdknj/
Z/AdSdzqQqykLYeeZ+WcoyEbRflshCwOsHevVxrjNC4ZFiT4DRzNj9L6b0Za
tx3KvZ1PPkrs+pL++iX2YN0x47ozxnUHjGt8u3XCcq1sXOe0rfPY1rlr63y1
dY7aOi9tnYu2VsXUZM/+rY9cO724jbwXdvBu6rrsDNZ4fq0Xdb9lvVNY/xms
8w83dw5v7RkCANf5hb0miXUKb2aSgFN4S48QTJI17mDrxeCGzuHdD+4c9vl7
o5/CYhncAaOhVgXC4AI550PFDz9Ns0+h2XcyxfzBUxMtsplKNX+D4BkGnb6I
5Fux0PNFAv+n709cpgVmpUQyceGgLk2LL4jlnJZAC6R0Hjygr6qOT8QTeaZj
8VyeyTzHegIZxoHG9WoxjB6KMvR5ajjQRPxGItJ+o5f///+k6geskpNHmTjV
SRZJmu8Yl/Iqo6L/Pvccv8iWGk2pjhhAaSbipJzPlbHpNZi5/NtElkZ8J/Pi
LZiP1I0QnFA+CUV0zi4RQIyg64k4w0Lw7fzKSZVU10huO8fMRr1EODHJ1H8E
oSwWWW4+rSeK3T5BDStk2HjvJJuLO1jvxP111cER7w5yhV8Q0Gk+i4BBYkxm
G2sF8wDN1ThY/ZhiFqZlocx4dxcDhk9xx7gd4BOE7KnHyIbEVtir+tvyGIBc
SSnuYatmtC/nYmOOk4wuJy5MmenjQtVdNSAbPerHamWuGBzgFAtZYFOuJwPg
xomtIkL5N0ttlrKIMMGJk8CgD+dfUYSqvsD4ik0RtTOgpB0gJYNc4OSc/Mr5
91GWlEvaNx35YyMOX8WMM2SF8c4DAjpVWWmwPsVSF4WiEvUbwrPzAOHpylQz
lt3sJ1tqa5Zcun5pA5ZvhoKdLwaU75RzUaQ6IsNgc66b4XYGb1/BgbwFSl6x
lJoIRdl4tJNDmTDZHKLPEaKji5Wk+N/mLg/4tNrlLruQq24xrPuTXRRX+5O7
MNxhHOeU/yQ4FN3CT2AeZ6fiicY1ZljQA1r35d46KigH3OaLus+ctiQBQ/E2
U0DLW4ag+vj3PYaVykFV8UFB3YYgjJdLQTSq7WAw7aYw3UOYnrkM6S38IBOg
xvPAthW2VY1tzBGwedQ/CyfcHYQ5dYy24KNFLr20qgJCcgMTTvwoN5htH2c7
dA9sLHowXURqHjxwjaUSXeFuDMWS9bhtm4casOoNoNjzyR5BYfzUKnSkQK1y
/LRW6R+FR71uTEPP2WA1Svon6Rkye6Ote0/iqPPdxmva7V4T1cbHBXBh+qAo
BmUV2bJEFUkM0ieBjXGSgY0iL60CwLIkpKg3B4jkfhg9B3N4seJ2OXFuc8T4
MsWszjE4ygYrMNkKQPgNj/NUfP8tdxj8F01yvSA5rAAA

-->

</rfc>
