<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>229826</bug_id>
          
          <creation_ts>2021-09-02 13:10:04 -0700</creation_ts>
          <short_desc>[JSC] Implement Temporal.Instant</short_desc>
          <delta_ts>2021-11-02 12:57:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230331</dependson>
          <blocked>223166</blocked>
    
    <blocked>232075</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Chimento">philip.chimento</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philip.chimento</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789858</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-02 13:10:04 -0700</bug_when>
    <thetext>Temporal.Instant and its methods except for toZonedDateTime/toZonedDateTimeISO, and Temporal.Now.instant()

Blocks bug 223166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790450</commentid>
    <comment_count>1</comment_count>
      <attachid>437328</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-03 17:50:36 -0700</bug_when>
    <thetext>Created attachment 437328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790451</commentid>
    <comment_count>2</comment_count>
      <attachid>437329</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-03 18:01:54 -0700</bug_when>
    <thetext>Created attachment 437329
Various tweaks in preparation for Temporal.Instant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790458</commentid>
    <comment_count>3</comment_count>
      <attachid>437332</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-03 18:10:43 -0700</bug_when>
    <thetext>Created attachment 437332
WIP - Temporal.Instant - not ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790460</commentid>
    <comment_count>4</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-03 18:21:53 -0700</bug_when>
    <thetext>The WIP patch doesn&apos;t cover string parsing yet. Additionally one corner that I intentionally cut was to store epochNanoseconds as a double, so I&apos;ll have to go back and change that. It actually requires at least 74 bits to store with the required precision.

I haven&apos;t decided yet if it&apos;s best to store epochNanoseconds as a JSBigInt in TemporalInstant, or, e.g. store epochMilliseconds and up to 1e6 nanoseconds as separate integers, or even store epochMilliseconds as a double (using that convenient WTF::Seconds type) and nanoseconds separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792055</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 13:11:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/82940066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793889</commentid>
    <comment_count>6</comment_count>
      <attachid>438302</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-15 16:48:22 -0700</bug_when>
    <thetext>Created attachment 438302
Various tweaks in preparation for Temporal.Instant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793895</commentid>
    <comment_count>7</comment_count>
      <attachid>438304</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-15 16:55:33 -0700</bug_when>
    <thetext>Created attachment 438304
Various tweaks in preparation for Temporal.Instant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793906</commentid>
    <comment_count>8</comment_count>
      <attachid>438304</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 17:10:28 -0700</bug_when>
    <thetext>Comment on attachment 438304
Various tweaks in preparation for Temporal.Instant

Talked with Philip. This patch is not &quot;Implement Temporal.Instant&quot;, so it should be uploaded in a different bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796746</commentid>
    <comment_count>9</comment_count>
      <attachid>439114</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-23 18:34:21 -0700</bug_when>
    <thetext>Created attachment 439114
Patch for preliminary review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796748</commentid>
    <comment_count>10</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-23 18:39:50 -0700</bug_when>
    <thetext>There are still a few outstanding FIXMEs and I need to add more tests, but I think this patch has reached the point where some preliminary review is worth it, especially for a relative JSC newbie like me. I&apos;ll also be AFK until Monday so that&apos;s another reason I&apos;m uploading something now.

(I think the 3 style checker failures are spurious: there is a missing copyright in wtf/Int128.h, and the variable name checker flags `unsigned s` and `unsigned ns` as unnecessary whereas the other arguments to that function (y, mon, d, h, min, ms, micros) are OK)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796751</commentid>
    <comment_count>11</comment_count>
      <attachid>439114</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-23 19:22:52 -0700</bug_when>
    <thetext>Comment on attachment 439114
Patch for preliminary review

View in context: https://bugs.webkit.org/attachment.cgi?id=439114&amp;action=review

Nice, some quick comments.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:185
&gt; +    static constexpr Int128 DAY_RANGE_S {86400&apos;00000000}; // 1e8 days
&gt; +    static constexpr Int128 NS_PER_MICROS {1000};
&gt; +    static constexpr Int128 NS_PER_MS {1&apos;000&apos;000};
&gt; +    static constexpr Int128 NS_PER_S {1&apos;000&apos;000&apos;000};
&gt; +    static constexpr Int128 NS_PER_MINUTE = NS_PER_S * 60;
&gt; +    static constexpr Int128 NS_PER_HOUR = NS_PER_MINUTE * 60;
&gt; +    static constexpr Int128 MIN_VALUE = -DAY_RANGE_S * NS_PER_S;
&gt; +    static constexpr Int128 MAX_VALUE = DAY_RANGE_S * NS_PER_S;

We do not use capital constants. Rename them like, dayRangeSeconds etc.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:251
&gt; +    if ((unsignedValue &amp; 0xffff&apos;ffff&apos;ffff&apos;ffff) == unsignedValue)

unsignedValue &lt;= UINT64_MAX would be simpler.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:254
&gt; +    if (sizeof(Digit) == 8) {

Use `if constexpr`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:259
&gt; +        Digit lowBits = static_cast&lt;Digit&gt;(unsignedValue &amp; 0xffff&apos;ffff&apos;ffff&apos;ffff);
&gt; +        Digit highBits = static_cast&lt;Digit&gt;((unsignedValue &gt;&gt; 64) &amp; 0xffff&apos;ffff&apos;ffff&apos;ffff);

I think we do not need these &amp;. Just casting is suffice.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:274
&gt; +    Digit digit0 = static_cast&lt;Digit&gt;(unsignedValue &amp; 0xffff&apos;ffff);
&gt; +    Digit digit1 = static_cast&lt;Digit&gt;((unsignedValue &gt;&gt; 32) &amp; 0xffff&apos;ffff);
&gt; +    Digit digit2 = static_cast&lt;Digit&gt;((unsignedValue &gt;&gt; 64) &amp; 0xffff&apos;ffff);
&gt; +    Digit digit3 = static_cast&lt;Digit&gt;((unsignedValue &gt;&gt; 96) &amp; 0xffff&apos;ffff);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797573</commentid>
    <comment_count>12</comment_count>
      <attachid>439371</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-27 11:29:43 -0700</bug_when>
    <thetext>Created attachment 439371
Patch for preliminary review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798937</commentid>
    <comment_count>13</comment_count>
      <attachid>439756</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-09-30 10:31:26 -0700</bug_when>
    <thetext>Created attachment 439756
Patch for preliminary review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799832</commentid>
    <comment_count>14</comment_count>
      <attachid>439756</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-03 00:18:09 -0700</bug_when>
    <thetext>Comment on attachment 439756
Patch for preliminary review

View in context: https://bugs.webkit.org/attachment.cgi?id=439756&amp;action=review

Commented.
Please update DerivedSources-input.xcfilelist and DerivedSources-output.xcfilelist too.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:907
&gt; +        return {ExactTime::fromISOPartsAndOffset(date.year(), date.month(), date.day(), time.hour(), time.minute(), time.second(), time.millisecond(), time.microsecond(), time.nanosecond(), offset)};

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1017
&gt; +    double utcMs = (dateDays * msPerDay + timeMs);

() is not necessary.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1018
&gt; +    Int128 utcNs = Int128 {static_cast&lt;int64_t&gt;(utcMs)} * 1&apos;000&apos;000 + micros * 1000 + ns;

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1019
&gt; +    return ExactTime {utcNs - offset};

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1038
&gt; +    resultNs += Int128 {static_cast&lt;int64_t&gt;(duration.hours())} * ExactTime::nsPerHour;

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1041
&gt; +    resultNs += Int128 {static_cast&lt;int64_t&gt;(duration.minutes())} * ExactTime::nsPerMinute;

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1044
&gt; +    resultNs += Int128 {static_cast&lt;int64_t&gt;(duration.seconds())} * ExactTime::nsPerSecond;

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1047
&gt; +    resultNs += Int128 {static_cast&lt;int64_t&gt;(duration.milliseconds())} * ExactTime::nsPerMillisecond;

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1050
&gt; +    resultNs += Int128 {static_cast&lt;int64_t&gt;(duration.microseconds())} * ExactTime::nsPerMicrosecond;

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1051
&gt; +    resultNs += Int128 {static_cast&lt;int64_t&gt;(duration.nanoseconds())};

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1053
&gt; +    ExactTime result {resultNs};

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1056
&gt; +    return {result};

{} is not necessary.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1061
&gt; +    Int128 incrementNs {increment};

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:1085
&gt; +    return ExactTime {round(m_epochNanoseconds, increment, unit, roundingMode)};

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:88
&gt; +    constexpr ExactTime(const ExactTime&amp; other) : m_epochNanoseconds(other.m_epochNanoseconds) { }

This is not necessary.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:92
&gt; +        return ExactTime(Int128 {epochSeconds} * ExactTime::nsPerSecond);

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:96
&gt; +        return ExactTime(Int128 {epochMilliseconds} * ExactTime::nsPerMillisecond);

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:100
&gt; +        return ExactTime(Int128 {epochMicroseconds} * ExactTime::nsPerMicrosecond);

Add space around {.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:139
&gt; +    String print() const
&gt; +    {
&gt; +        StringBuilder builder;
&gt; +        if (m_epochNanoseconds &lt; 0) {
&gt; +            builder.append(&apos;-&apos;);
&gt; +            printImpl(builder, -m_epochNanoseconds);
&gt; +        } else
&gt; +            printImpl(builder, m_epochNanoseconds);
&gt; +        return builder.toString();
&gt; +    }

&quot;print&quot; function should be used for printing string to dataLog. Please rename it.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:181
&gt; +    static constexpr Int128 dayRangeSeconds {86400&apos;00000000}; // 1e8 days
&gt; +    static constexpr Int128 nsPerMicrosecond {1000};
&gt; +    static constexpr Int128 nsPerMillisecond {1&apos;000&apos;000};
&gt; +    static constexpr Int128 nsPerSecond {1&apos;000&apos;000&apos;000};

Add space around { and }.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:99
&gt; +        return dateNowImpl().toNumber(globalObject);

Use RELEASE_AND_RETURN(scope, dateNowImpl().toNumber(globalObject));

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:111
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);

VM&amp; vm = globalObject-&gt;vm();
auto scope = DECLARE_THROW_SCOPE(vm);
should be defined in the prologue of the function.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:58
&gt; +void TemporalInstant::finishCreation(VM&amp; vm)
&gt; +{
&gt; +    Base::finishCreation(vm);
&gt; +    ASSERT(inherits(vm, info()));
&gt; +}

We do not need to define it.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:91
&gt; +    JSBigInt* bigint = asHeapBigInt(epochNanoseconds);

Add BIGINT32 case.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:94
&gt; +    ISO8601::ExactTime exactTime {(high &lt;&lt; 64 | low) * (bigint-&gt;sign() ? -1 : 1)};

Add space around {.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:97
&gt; +        String argAsString {bigint-&gt;toString(globalObject, 10)};

In this case, use argsAsString = bigint-&gt;toString(globalObject, 10)

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:120
&gt; +    // TODO: when Temporal.ZonedDateTime lands

TODO is not used in WebKit. Use FIXME

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:200
&gt; +    JSBigInt* bigint = asHeapBigInt(epochMicroseconds);

Add BIGINT32 case.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:222
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    auto scope = DECLARE_THROW_SCOPE(vm);
&gt; +

This is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:281
&gt; +    double seconds {static_cast&lt;double&gt;(static_cast&lt;int64_t&gt;(roundedDiff / 1&apos;000&apos;000&apos;000))};

Add space around {.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:282
&gt; +    double nanosecondsRemainder {static_cast&lt;double&gt;(static_cast&lt;int64_t&gt;(roundedDiff % 1&apos;000&apos;000&apos;000))};

Add space around {.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:283
&gt; +    ISO8601::Duration result {0, 0, 0, 0, 0, 0, seconds, 0, 0, nanosecondsRemainder};

Add space around {.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:406
&gt; +    char buffer[20];
&gt; +    // If the year is outside the bounds of 0 and 9999 inclusive we want to use
&gt; +    // the extended year format (PadISOYear).
&gt; +    int charactersWritten;
&gt; +    if (gregorianDateTime.year() &gt; 9999 || gregorianDateTime.year() &lt; 1000)
&gt; +        charactersWritten = snprintf(buffer, sizeof(buffer), &quot;%+07d-%02d-%02dT%02d:%02d&quot;, gregorianDateTime.year(), gregorianDateTime.month() + 1, gregorianDateTime.monthDay(), gregorianDateTime.hour(), gregorianDateTime.minute());
&gt; +    else
&gt; +        charactersWritten = snprintf(buffer, sizeof(buffer), &quot;%04d-%02d-%02dT%02d:%02d&quot;, gregorianDateTime.year(), gregorianDateTime.month() + 1, gregorianDateTime.monthDay(), gregorianDateTime.hour(), gregorianDateTime.minute());
&gt; +    ASSERT(charactersWritten &gt; 0 &amp;&amp; static_cast&lt;unsigned&gt;(charactersWritten) &lt; sizeof(buffer));
&gt; +    if (static_cast&lt;unsigned&gt;(charactersWritten) &gt;= sizeof(buffer))
&gt; +        return &quot;&quot;_s;
&gt; +
&gt; +    StringBuilder builder;
&gt; +    builder.append(buffer);

Let&apos;s not use snprintf. It is very slow compared to the other way. You can use makeString, pad() etc. instead.

&gt; Source/JavaScriptCore/runtime/TemporalInstantPrototype.cpp:121
&gt; +    const std::optional&lt;ISO8601::ExactTime&gt; newExactTime = instant-&gt;exactTime().add(duration);

We don&apos;t use const in this case.

&gt; Source/JavaScriptCore/runtime/TemporalInstantPrototype.cpp:142
&gt; +    const std::optional&lt;ISO8601::ExactTime&gt; newExactTime = instant-&gt;exactTime().add(-duration);

We don&apos;t use const in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800750</commentid>
    <comment_count>15</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-05 14:10:19 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
&gt; &gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:406
&gt; &gt; +    char buffer[20];
&gt; &gt; +    // If the year is outside the bounds of 0 and 9999 inclusive we want to use
&gt; &gt; +    // the extended year format (PadISOYear).
&gt; &gt; +    int charactersWritten;
&gt; &gt; +    if (gregorianDateTime.year() &gt; 9999 || gregorianDateTime.year() &lt; 1000)
&gt; &gt; +        charactersWritten = snprintf(buffer, sizeof(buffer), &quot;%+07d-%02d-%02dT%02d:%02d&quot;, gregorianDateTime.year(), gregorianDateTime.month() + 1, gregorianDateTime.monthDay(), gregorianDateTime.hour(), gregorianDateTime.minute());
&gt; &gt; +    else
&gt; &gt; +        charactersWritten = snprintf(buffer, sizeof(buffer), &quot;%04d-%02d-%02dT%02d:%02d&quot;, gregorianDateTime.year(), gregorianDateTime.month() + 1, gregorianDateTime.monthDay(), gregorianDateTime.hour(), gregorianDateTime.minute());
&gt; &gt; +    ASSERT(charactersWritten &gt; 0 &amp;&amp; static_cast&lt;unsigned&gt;(charactersWritten) &lt; sizeof(buffer));
&gt; &gt; +    if (static_cast&lt;unsigned&gt;(charactersWritten) &gt;= sizeof(buffer))
&gt; &gt; +        return &quot;&quot;_s;
&gt; &gt; +
&gt; &gt; +    StringBuilder builder;
&gt; &gt; +    builder.append(buffer);
&gt; 
&gt; Let&apos;s not use snprintf. It is very slow compared to the other way. You can
&gt; use makeString, pad() etc. instead.

Got it, thanks. Originally I adapted this code from dateProtoFuncToISOString() in runtime/DatePrototype.cpp; I assume we should not change that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800775</commentid>
    <comment_count>16</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-05 14:41:09 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
&gt; &gt; Source/JavaScriptCore/runtime/ISO8601.h:88
&gt; &gt; +    constexpr ExactTime(const ExactTime&amp; other) : m_epochNanoseconds(other.m_epochNanoseconds) { }
&gt; 
&gt; This is not necessary.

I remembered why I put this in; it seems that Clang doesn&apos;t correctly generate the copy constructor when we have a __int128 member. I&apos;ve added a comment explaining why this &quot;useless&quot; copy constructor is here, and will try to isolate a minimum reproducible example and hopefully report a Clang bug. (Or find out what my mistake was :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800998</commentid>
    <comment_count>17</comment_count>
      <attachid>439756</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-06 02:12:46 -0700</bug_when>
    <thetext>Comment on attachment 439756
Patch for preliminary review

View in context: https://bugs.webkit.org/attachment.cgi?id=439756&amp;action=review

Added some more style nits.

&gt; Source/JavaScriptCore/runtime/TemporalDuration.cpp:170
&gt; +const ISO8601::Duration TemporalDuration::toLimitedDuration(JSGlobalObject* globalObject, JSValue itemValue, std::initializer_list&lt;TemporalUnit&gt; disallowedUnits)

This const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalDuration.h:49
&gt; +    static const ISO8601::Duration toLimitedDuration(JSGlobalObject*, JSValue, std::initializer_list&lt;TemporalUnit&gt; disallowedUnits);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:48
&gt; +TemporalInstant::TemporalInstant(VM&amp; vm, Structure* structure, const ISO8601::ExactTime exactTime)

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:60
&gt; +TemporalInstant* TemporalInstant::create(VM&amp; vm, Structure* structure, const ISO8601::ExactTime exactTime)

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:70
&gt; +TemporalInstant* TemporalInstant::tryCreateIfValid(JSGlobalObject* globalObject, const ISO8601::ExactTime exactTime, Structure* structure)

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:246
&gt; +const ISO8601::Duration TemporalInstant::difference(JSGlobalObject* globalObject, TemporalInstant* other, JSValue optionsValue) const

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:308
&gt; +const ISO8601::ExactTime TemporalInstant::round(JSGlobalObject* globalObject, JSValue optionsValue) const

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:385
&gt; +String TemporalInstant::toString(const ISO8601::ExactTime exactTime, JSObject* timeZone, PrecisionData precision)

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:46
&gt; +    static TemporalInstant* create(VM&amp;, Structure*, const ISO8601::ExactTime);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:47
&gt; +    static TemporalInstant* tryCreateIfValid(JSGlobalObject*, const ISO8601::ExactTime, Structure* = nullptr);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:61
&gt; +    constexpr const ISO8601::ExactTime exactTime() const { return m_exactTime; }

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:64
&gt; +    const ISO8601::Duration difference(JSGlobalObject*, TemporalInstant*, JSValue options) const;
&gt; +    const ISO8601::ExactTime round(JSGlobalObject*, JSValue options) const;

const iISO8601::XXX&apos;s const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:72
&gt; +    TemporalInstant(VM&amp;, Structure*, const ISO8601::ExactTime);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:77
&gt; +    static const ISO8601::ExactTime fromObject(JSGlobalObject*, JSObject*);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.h:79
&gt; +    static String toString(const ISO8601::ExactTime, JSObject* timeZone, PrecisionData);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstantPrototype.cpp:118
&gt; +    const ISO8601::Duration duration = TemporalDuration::toLimitedDuration(globalObject, callFrame-&gt;argument(0), disallowedAdditionUnits);

const is not necessary.

&gt; Source/JavaScriptCore/runtime/TemporalInstantPrototype.cpp:139
&gt; +    const ISO8601::Duration duration = TemporalDuration::toLimitedDuration(globalObject, callFrame-&gt;argument(0), disallowedAdditionUnits);

const is not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801001</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-06 02:29:20 -0700</bug_when>
    <thetext> (In reply to Philip Chimento from comment #16)
&gt; (In reply to Yusuke Suzuki from comment #14)
&gt; &gt; &gt; Source/JavaScriptCore/runtime/ISO8601.h:88
&gt; &gt; &gt; +    constexpr ExactTime(const ExactTime&amp; other) : m_epochNanoseconds(other.m_epochNanoseconds) { }
&gt; &gt; 
&gt; &gt; This is not necessary.
&gt; 
&gt; I remembered why I put this in; it seems that Clang doesn&apos;t correctly
&gt; generate the copy constructor when we have a __int128 member. I&apos;ve added a
&gt; comment explaining why this &quot;useless&quot; copy constructor is here, and will try
&gt; to isolate a minimum reproducible example and hopefully report a Clang bug.
&gt; (Or find out what my mistake was :-)

I think probably I found what is happening. This statement itself is not related. So let&apos;s remove that. The problem is that, `alignof(__int128_t)` is 16!, which is probably only the data type usually we see.
JSC GC-managed object is allocated with 8byte alignment (for MarkBlock allocations, it is 16-byte aligned. But for PreciseAllocation, it is 8-byte aligned. And first several objects of the same type can be allocated from PreciseAllocation). This means that, 16 byte alignment requirement can be broken.

I reproduced JSC EWS crash locally. And the crash is

    0x102ecb2f4 &lt;+164&gt;: jne    0x102ecb325               ; &lt;+213&gt; at TemporalInstant.cpp:351:20
    0x102ecb2f6 &lt;+166&gt;: xorl   %eax, %eax
    0x102ecb2f8 &lt;+168&gt;: movq   %rax, -0x80(%rbp)
    0x102ecb2fc &lt;+172&gt;: jmp    0x102ecb344               ; &lt;+244&gt; at TemporalInstant.cpp:355:26
-&gt;  0x102ecb2fe &lt;+174&gt;: movaps 0x10(%r12), %xmm0
    0x102ecb304 &lt;+180&gt;: movaps %xmm0, -0x70(%rbp)
    0x102ecb308 &lt;+184&gt;: leaq   -0x70(%rbp), %rsi
    0x102ecb30c &lt;+188&gt;: movabsq $0x100000009, %r8         ; imm = 0x100000009
    0x102ecb316 &lt;+198&gt;: movl   $0x2, %ecx

And r12 is 0x00000001005958d8. So 0x10(%r12) is not 16-byte aligned while the compiler is using movaps since it assumes that TemporalInstant is allocated with 16byte aligned, but it is not.

For now, you can just try simple way like this. https://gist.github.com/Constellation/71dd37e75b013e3130104e64a85e254b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801278</commentid>
    <comment_count>19</comment_count>
      <attachid>440419</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-06 13:01:09 -0700</bug_when>
    <thetext>Created attachment 440419
Patch (in progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801279</commentid>
    <comment_count>20</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-06 13:02:19 -0700</bug_when>
    <thetext>Thanks for the comments. Here&apos;s a new patch - no need to review it right away, I&apos;m mainly posting it to make sure the bots now pass it. I&apos;ll be adding some more tests and trying to resolve the remaining open questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801361</commentid>
    <comment_count>21</comment_count>
      <attachid>440440</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-06 14:52:38 -0700</bug_when>
    <thetext>Created attachment 440440
Patch (in progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803577</commentid>
    <comment_count>22</comment_count>
      <attachid>441022</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-12 17:24:47 -0700</bug_when>
    <thetext>Created attachment 441022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803581</commentid>
    <comment_count>23</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-12 17:26:08 -0700</bug_when>
    <thetext>I rebased the patch again. I still need to add more tests, so this isn&apos;t 100% ready for review, but any thoughts on the remaining FIXMEs would be appreciated. I will intend to resume this next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805158</commentid>
    <comment_count>24</comment_count>
      <attachid>441022</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-15 17:42:42 -0700</bug_when>
    <thetext>Comment on attachment 441022
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=441022&amp;action=review

Commented about HeapBigInt.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:85
&gt; +    JSBigInt* bigint = asHeapBigInt(epochNanoseconds);

This is not correct. In BIGINT32 environment, epochMicroseconds can be BigInt32. So we should check it first before casting it to HeapBigInt via asHeapBigInt.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:210
&gt; +    JSBigInt* bigint = asHeapBigInt(epochMicroseconds);
&gt; +#if USE(BIGINT32)
&gt; +    bool bigIntTooLong = bigint-&gt;length() &gt; 2;
&gt; +#else
&gt; +    bool bigIntTooLong = bigint-&gt;length() &gt; 1;
&gt; +#endif
&gt; +    ISO8601::ExactTime exactTime = ISO8601::ExactTime::fromEpochMicroseconds(JSBigInt::toBigUInt64(bigint));

This is not correct. In BIGINT32 environment, epochMicroseconds can be BigInt32. So we should check it first before casting it to HeapBigInt via asHeapBigInt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807532</commentid>
    <comment_count>25</comment_count>
      <attachid>442118</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-21 21:54:14 -0700</bug_when>
    <thetext>Created attachment 442118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807541</commentid>
    <comment_count>26</comment_count>
      <attachid>442122</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-21 22:12:56 -0700</bug_when>
    <thetext>Created attachment 442122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808007</commentid>
    <comment_count>27</comment_count>
      <attachid>442242</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-22 18:50:05 -0700</bug_when>
    <thetext>Created attachment 442242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808577</commentid>
    <comment_count>28</comment_count>
      <attachid>442414</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-25 14:06:32 -0700</bug_when>
    <thetext>Created attachment 442414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808647</commentid>
    <comment_count>29</comment_count>
      <attachid>442434</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-25 16:02:31 -0700</bug_when>
    <thetext>Created attachment 442434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808653</commentid>
    <comment_count>30</comment_count>
      <attachid>442436</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-25 16:11:14 -0700</bug_when>
    <thetext>Created attachment 442436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808655</commentid>
    <comment_count>31</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-25 16:11:59 -0700</bug_when>
    <thetext>This patch temporarily contains the one from bug 232270, should be rebased when that one lands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808713</commentid>
    <comment_count>32</comment_count>
      <attachid>442445</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-25 18:41:18 -0700</bug_when>
    <thetext>Created attachment 442445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808894</commentid>
    <comment_count>33</comment_count>
      <attachid>442498</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-10-26 09:21:49 -0700</bug_when>
    <thetext>Created attachment 442498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809972</commentid>
    <comment_count>34</comment_count>
      <attachid>442498</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-28 23:24:18 -0700</bug_when>
    <thetext>Comment on attachment 442498
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=442498&amp;action=review

r=me with nits.

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:109
&gt; +    if constexpr (sizeof(JSBigInt::Digit) == 4) {
&gt; +        Int128 d0 { bigint-&gt;length() &gt; 0 ? bigint-&gt;digit(0) : 0 };
&gt; +        Int128 d1 { bigint-&gt;length() &gt; 1 ? bigint-&gt;digit(1) : 0 };
&gt; +        Int128 d2 { bigint-&gt;length() &gt; 2 ? bigint-&gt;digit(2) : 0 };
&gt; +        total = d2 &lt;&lt; 64 | d1 &lt;&lt; 32 | d0;
&gt; +        bigIntTooLong = bigint-&gt;length() &gt; 3;
&gt; +    } else {
&gt; +        ASSERT(sizeof(JSBigInt::Digit) == 8);
&gt; +        Int128 low { bigint-&gt;length() &gt; 0 ? bigint-&gt;digit(0) : 0 };
&gt; +        Int128 high { bigint-&gt;length() &gt; 1 ? bigint-&gt;digit(1) : 0 };
&gt; +        total = high &lt;&lt; 64 | low;
&gt; +        bigIntTooLong = bigint-&gt;length() &gt; 2;
&gt; +    }

INT128_MIN case is not handled properly (-1 * INT128_MIN is undefined).
Can you check it? (and can you add a test?)

&gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:233
&gt; +    int64_t microseconds = JSBigInt::toBigInt64(bigint);

It is not handling negative Int128 ranges (if JSBigInt&apos;s 2 digits are larger than INT128_MAX, then if it is signed, it is not within Int128 range).
Can you fix it and add test for this?

&gt; Source/JavaScriptCore/runtime/TemporalObject.cpp:470
&gt; +

Let&apos;s add `ASSERT(increment != 0)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810887</commentid>
    <comment_count>35</comment_count>
      <attachid>443019</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-11-01 14:46:46 -0700</bug_when>
    <thetext>Created attachment 443019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810889</commentid>
    <comment_count>36</comment_count>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2021-11-01 14:49:37 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #34)
&gt; &gt; Source/JavaScriptCore/runtime/TemporalInstant.cpp:233
&gt; &gt; +    int64_t microseconds = JSBigInt::toBigInt64(bigint);
&gt; 
&gt; It is not handling negative Int128 ranges (if JSBigInt&apos;s 2 digits are larger
&gt; than INT128_MAX, then if it is signed, it is not within Int128 range).
&gt; Can you fix it and add test for this?

I guess you mean INT64_MAX here?

I&apos;ve fixed these cases, added tests, and added the assertion.

Additionally I adjusted the test with the BigInt(&apos;9&apos;.repeat(2147483648)) case, because I suspect that constructing that string was what was making the jsc-armv7 tests fail. (Anyway, the test was not actually testing what we thought it would, because BigInts that large are not allowed.)

Hopefully ready to land this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811230</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-02 12:57:48 -0700</bug_when>
    <thetext>Committed r285178 (243811@main): &lt;https://commits.webkit.org/243811@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443019.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437328</attachid>
            <date>2021-09-03 17:50:36 -0700</date>
            <delta_ts>2021-09-03 18:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20210903175036.patch</filename>
            <type>text/plain</type>
            <size>16057</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NTgzMDg1ODJjZmRiOTBmY2VhOTdhMjU0ZTk5MzM3MzVjZmVhYzQzLi5hZWUzZmQ1NmE0Y2Q1NDJk
YzZhNWI3MWU2NDAwZWEyODYyMWViZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMS0wOS0wMyAgUGhpbGlwIENoaW1lbnRvICA8cGhpbGlwLmNoaW1lbnRv
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisK
KyAgICAgICAgVmFyaW91cyB0d2Vha3MgYW5kIGltcHJvdmVtZW50cyB0byBleGlzdGluZyBUZW1w
b3JhbCBjb2RlLCB0aGF0IHdpbGwgYmUKKyAgICAgICAgdXNlZCBmb3IgVGVtcG9yYWwuSW5zdGFu
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1
bnRpbWUvSVNPODYwMS5oOgorICAgICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0
b3JbXSk6IEFkZCBhbiBvcGVyYXRvcltdIHRoYXQgaW5kZXhlcyBieQorICAgICAgICAgIFRlbXBv
cmFsVW5pdC4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29u
c3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3ItIGNvbnN0KTog
QWRkIGEgbmVnYXRpb24gb3BlcmF0b3IuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6cHJvcGVydHlOYW1lKTogRml4ICdjb250cm9sIHJlYWNo
ZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uJworICAgICAgICAgIHdhcm5pbmcuCisgICAgICAg
IChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24pOiBJbXByb3ZlIGVycm9yIG1lc3Nh
Z2UgdG8gaW5jbHVkZQorICAgICAgICAgIHRoZSBpbnZhbGlkIHN0cmluZy4KKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxEdXJhdGlvbjo6bmVnYXRlZCBjb25zdCk6IFVzZSBTdWJkdXJhdGlvbidzIG5l
Z2F0aW9uCisgICAgICAgICAgb3BlcmF0b3IuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OnJvdW5kIGNvbnN0KTogRGVkdXBsaWNhdGUgY29kZSB3aXRoCisgICAgICAgICAgdGVtcG9y
YWxSb3VuZGluZ01vZGUoKS4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJp
bmcgY29uc3QpOiBUYWtlIFRlbXBvcmFsVW5pdDo6TWludXRlIGludG8KKyAgICAgICAgICBhY2Nv
dW50OyBkZWR1cGxpY2F0ZSBjb2RlIHdpdGggdGVtcG9yYWxSb3VuZGluZ01vZGUoKS4KKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcpOiBVc2UgZm9ybWF0U2Vjb25kc1N0
cmluZ0ZyYWN0aW9uKCkuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6IEFs
cGhhYmV0aXplLgorICAgICAgICAoSlNDOjpjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKTogQWxw
aGFiZXRpemUuCisgICAgICAgIChKU0M6OmNyZWF0ZU5vd09iamVjdCk6IEFscGhhYmV0aXplLgor
ICAgICAgICAoSlNDOjp0ZW1wb3JhbFVuaXRUb1N0cmluZyk6IEFkZCBhIGZ1bmN0aW9uIHRvIGR1
bXAgdGhlIG5hbWUgb2YgYQorICAgICAgICAgIFRlbXBvcmFsVW5pdCwgZS5nLiBmb3IgZXJyb3Ig
bWVzc2FnZXMuCisgICAgICAgIChKU0M6OnNlY29uZHNTdHJpbmdQcmVjaXNpb24pOiBBbGxvdyBU
ZW1wb3JhbFVuaXQ6Ok1pbnV0ZSB3aGljaCBpcworICAgICAgICAgIHJlbGV2YW50IHRvIG90aGVy
IFRlbXBvcmFsIHR5cGVzLgorICAgICAgICAoSlNDOjpmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rp
b24pOiBNb3ZlIGNvZGUgZnJvbSBUZW1wb3JhbER1cmF0aW9uIGludG8KKyAgICAgICAgICBhIGZ1
bmN0aW9uIHdoaWNoIHdpbGwgYmUgcmV1c2VkIGluIG90aGVyIFRlbXBvcmFsIHR5cGVzLgorICAg
ICAgICAoSlNDOjp0ZW1wb3JhbFJvdW5kaW5nTW9kZSk6IERlZHVwbGljYXRlIGNvZGUgdG8gZ2V0
IHRoZSByb3VuZGluZ01vZGUKKyAgICAgICAgICBwcm9wZXJ0eSBmcm9tIGFuIG9wdGlvbnMgYmFn
LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJlclRvSW5jcmVtZW50KTogRml4ICdjb250cm9sIHJl
YWNoZXMgZW5kIG9mIG5vbi12b2lkCisgICAgICAgICAgZnVuY3Rpb24nIHdhcm5pbmcuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorCiAyMDIxLTA5LTAyICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbSlNDXSBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdDb2RlQmxvY2tGb3Igc2hvdWxkIGhhbmRsZSBleGNlcHRpb25zIG1vcmUgcHJl
ZGljdGFibHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2
MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBlNTdj
MWNhNTJiNDdmNDdhOTNkNDdmYjBhNDdiOWI1YmZjY2I2MDg1Li45ZTM3YTQ1NDE1ZWU1NTg2M2Nj
ZjUxMmMwMThjNzBkZWRkMDA0MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNP
ODYwMS5oCkBAIC00MSwxMSArNDEsMjEgQEAgc3RydWN0IER1cmF0aW9uIHsKIAogICAgIGRvdWJs
ZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gZGF0YVtpXTsgfQogICAgIGNvbnN0IGRv
dWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gZGF0YVtpXTsgfQorICAg
IGRvdWJsZSYgb3BlcmF0b3JbXShUZW1wb3JhbFVuaXQgdSkgeyByZXR1cm4gZGF0YVtzdGF0aWNf
Y2FzdDx1aW50OF90Pih1KV07IH0KKyAgICBjb25zdCBkb3VibGUmIG9wZXJhdG9yW10oVGVtcG9y
YWxVbml0IHUpIGNvbnN0IHsgcmV0dXJuIGRhdGFbc3RhdGljX2Nhc3Q8dWludDhfdD4odSldOyB9
CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBkYXRhLmJlZ2luKCk7
IH0KICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBkYXRhLmVuZCgpOyB9
CiAgICAgdm9pZCBjbGVhcigpIHsgZGF0YS5maWxsKDApOyB9CiAKICAgICBzdGQ6OmFycmF5PGRv
dWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBkYXRhIHsgfTsKKworICAgIGNvbnN0ZXhwciBE
dXJhdGlvbiBvcGVyYXRvci0oKSBjb25zdAorICAgIHsKKyAgICAgICAgRHVyYXRpb24gcmVzdWx0
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVtcG9yYWxVbml0czsg
aSsrKQorICAgICAgICAgICAgcmVzdWx0W2ldID0gLWRhdGFbaV07CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogfTsKIAogc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlv
bihTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggNjdhZDRlODE5ZmY0YmJlODIzMTdkMGY3NzRjY2JmZGIz
YWEzYjNmZS4uYTQwN2IwOTZjMzU1OTk4NTQ5ZTE4ZTk0ZjBlYWMzN2FkZmYxYTk1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZt
LCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19URU1QT1JB
TF9EVVJBVElPTl9QUk9QRVJUWV9OQU1FKQogI3VuZGVmIEpTQ19URU1QT1JBTF9EVVJBVElPTl9Q
Uk9QRVJUWV9OQU1FCiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBjb25z
dCBDbGFzc0luZm8gVGVtcG9yYWxEdXJhdGlvbjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbER1
cmF0aW9uKSB9OwpAQCAtMTYxLDcgKzE2Miw3IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFs
RHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAK
ICAgICBhdXRvIHBhcnNlZFN1YmR1cmF0aW9ucyA9IElTTzg2MDE6OnBhcnNlRHVyYXRpb24oc3Ry
aW5nKTsKICAgICBpZiAoIXBhcnNlZFN1YmR1cmF0aW9ucykgewotICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvdWxkIG5vdCBwYXJzZSBEdXJhdGlvbiBzdHJp
bmciX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFr
ZVN0cmluZygiJyJfcywgc3RyaW5nLCAiJyBpcyBub3QgYSB2YWxpZCBEdXJhdGlvbiBzdHJpbmci
X3MpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yNjMsMTAgKzI2NCw3
IEBAIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp3aXRo
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0
aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpuZWdhdGVkKCkgY29uc3QKIHsKLSAgICBTdWJkdXJhdGlv
bnMgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3JhbFVu
aXRzOyBpKyspCi0gICAgICAgIHJlc3VsdFtpXSA9IC1tX3N1YmR1cmF0aW9uc1tpXTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAtbV9zdWJkdXJhdGlvbnM7CiB9CiAKIFRlbXBvcmFs
RHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjphYnMoKSBjb25zdApAQCAt
NDY1LDkgKzQ2Myw3IEBAIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1
cmF0aW9uOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgVGVtcG9yYWxVbml0
IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29u
ZCk7CiAgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihzdGQ6
Om1pbihkZWZhdWx0TGFyZ2VzdFVuaXQsIHNtYWxsZXN0VW5pdCkpOwogCi0gICAgYXV0byByb3Vu
ZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCi0gICAgICAgIHsgeyAiY2VpbCJfcywg
Um91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0s
IHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJv
dW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCi0gICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBi
ZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRc
IiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9
IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2Rl
OjpIYWxmRXhwYW5kKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNl
KTsKQEAgLTUyOCwxMSArNTI0LDEyIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKICAgICBQ
cmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NF
UlQoZGF0YS51bml0ID49IFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBpZiAoZGF0YS51bml0
IDwgVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBub3QgYmUgXCJtaW51dGVcIiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCi0gICAgYXV0byByb3VuZGluZ01vZGUgPSBp
bnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsCi0gICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2Rl
OjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9z
LCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZCB9IH0sCi0gICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJj
ZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRp
bmdNb2RlOjpUcnVuYyk7CisgICAgYXV0byByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5n
TW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBObyBuZWVkIHRvIG1ha2Ug
YSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCkBAIC01OTUs
MTcgKzU5Miw3IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1w
b3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGZvcm1hdEludGVnZXIoYmFsYW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAgYXV0byBmcmFj
dGlvbiA9IHN0ZDo6YWJzKGJhbGFuY2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0ZDo6YWJzKGJh
bGFuY2VkTWljcm9zZWNvbmRzKSAqIDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFub3NlY29uZHMp
OwotICAgICAgICBpZiAoKCFwcmVjaXNpb24gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb24gJiYg
cHJlY2lzaW9uLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJp
bmcoJy4nLCBwYWQoJzAnLCA5LCBmcmFjdGlvbikpOwotICAgICAgICAgICAgaWYgKHByZWNpc2lv
bikKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVm
dChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvbi52YWx1ZSgpKSkpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJv
ZXMgPSBwYWRkZWQubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFtsZW5n
dGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgLSAxXSA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAg
IGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcy0tOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9l
cykpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGZvcm1hdFNlY29uZHNTdHJp
bmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsKIAogICAgICAgICBidWls
ZGVyLmFwcGVuZCgnUycpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCA5NTM1NzE5ZjdlYzFhMGU5NjU0MThhNTRhZDM1
MGM3ZWJlNjFjNDk5Li5hNTliMmNhYWNmOGMxZThkNmMwYjY0M2QzYTYzNDg3ZTQzZjY3OGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3Bw
CkBAIC00NSwxOCArNDUsMTggQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSo+KGdsb2JhbE9iamVj
dC0+Y2FsZW5kYXJTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAot
c3RhdGljIEpTVmFsdWUgY3JlYXRlTm93T2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkK
K3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVj
dCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2Fz
dDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHJldHVybiBUZW1w
b3JhbE5vdzo6Y3JlYXRlKHZtLCBUZW1wb3JhbE5vdzo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxU
ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBjcmVh
dGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBK
U1ZhbHVlIGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
VGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkp
LCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRp
b25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gVGVt
cG9yYWxOb3c6OmNyZWF0ZSh2bSwgVGVtcG9yYWxOb3c6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpAQCAtNjgsOCArNjgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIC8qIFNvdXJjZSBmb3IgVGVtcG9yYWxPYmplY3QubHV0LmgKIEBiZWdp
biB0ZW1wb3JhbE9iamVjdFRhYmxlCiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29u
c3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawotICBOb3cgICAgICAgICAg
ICBjcmVhdGVOb3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJh
Y2sKICAgRHVyYXRpb24gICAgICAgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvciAgICAgICBEb250
RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAg
ICAgICAgICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogQGVuZAogKi8KIApAQCAt
MTMzLDYgKzEzMywyMyBAQCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxVbml0
VHlwZShTdHJpbmdWaWV3IHVuaXQpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAorU3Ry
aW5nIHRlbXBvcmFsVW5pdFRvU3RyaW5nKFRlbXBvcmFsVW5pdCB1bml0KQoreworICAgIHN3aXRj
aCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpZZWFyOiByZXR1cm4gInllYXIiX3M7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOiByZXR1cm4gIm1vbnRoIl9zOworICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpXZWVrOiByZXR1cm4gIndlZWsiX3M7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkRheTogcmV0dXJuICJkYXkiX3M7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6
IHJldHVybiAiaG91ciJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiByZXR1cm4g
Im1pbnV0ZSJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiByZXR1cm4gInNlY29u
ZCJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiAibWlsbGlz
ZWNvbmQiX3M7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gIm1p
Y3Jvc2Vjb25kIl9zOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiByZXR1cm4g
Im5hbm9zZWNvbmQiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiAv
LyBUb0xhcmdlc3RUZW1wb3JhbFVuaXQgKCBub3JtYWxpemVkT3B0aW9ucywgZGlzYWxsb3dlZFVu
aXRzLCBmYWxsYmFjayBbICwgYXV0b1ZhbHVlIF0gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9sYXJnZXN0dGVtcG9yYWx1bml0CiBzdGQ6Om9w
dGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxMYXJnZXN0VW5pdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgc3RkOjppbml0aWFsaXplcl9saXN0PFRl
bXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRzLCBUZW1wb3JhbFVuaXQgYXV0b1ZhbHVlKQpAQCAt
MjMyLDExICsyNDksMTMgQEAgUHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHQKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1v
bnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBUZW1wb3JhbFVuaXQ6
OkhvdXIsIFRlbXBvcmFsVW5pdDo6TWludXRlIH0pOworICAgIGF1dG8gc21hbGxlc3RVbml0ID0g
dGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5p
dDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3Jh
bFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyIH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoc21hbGxlc3RVbml0KSB7CiAgICAgICAgIHN3aXRj
aCAoc21hbGxlc3RVbml0LnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1p
bnV0ZToKKyAgICAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYWxVbml0OjpN
aW51dGUsIDEgfTsKICAgICAgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDoKICAgICAgICAg
ICAgIHJldHVybiB7IDAsIFRlbXBvcmFsVW5pdDo6U2Vjb25kLCAxIH07CiAgICAgICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDoKQEAgLTI3MSw2ICsyOTAsMjEgQEAgUHJlY2lzaW9u
RGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBvcHQKICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TmFub3Nl
Y29uZCwgc3RkOjpwb3coMTAsIDkgLSBkaWdpdHMpIH07CiB9CiAKK3ZvaWQgZm9ybWF0U2Vjb25k
c1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9u
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb24pCit7CisgICAgaWYgKCghcHJlY2lz
aW9uICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uICYmIHByZWNpc2lvbi52YWx1ZSgpKSkgewor
ICAgICAgICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQoJzAnLCA5LCBmcmFjdGlv
bikpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFkZGVkLmxlbmd0aCgpIC0gKDkgLSBwcmVjaXNpb24u
dmFsdWUoKSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGxlbmd0aFdpdGhv
dXRUcmFpbGluZ1plcm9lcyA9IHBhZGRlZC5sZW5ndGgoKTsKKyAgICAgICAgICAgIHdoaWxlIChw
YWRkZWRbbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzIC0gMV0gPT0gJzAnKQorICAgICAgICAg
ICAgICAgIGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcy0tOworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQobGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVy
b2VzKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9u
Um91bmRpbmdJbmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3JhbGR1cmF0aW9ucm91bmRpbmdpbmNy
ZW1lbnQKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVt
cG9yYWxVbml0IHVuaXQpCkBAIC0zMTMsNiArMzQ3LDIwIEBAIGRvdWJsZSB0ZW1wb3JhbFJvdW5k
aW5nSW5jcmVtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRp
b25zCiAgICAgcmV0dXJuIGluY3JlbWVudDsKIH0KIAorUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91
bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25z
LCBSb3VuZGluZ01vZGUgZGVmYXVsdE1vZGUpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUm91bmRpbmdNb2RlPj4g
dmFsdWVzID0geworICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwKKyAg
ICAgICAgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwKKyAgICAgICAgeyAidHJ1
bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAgeyAiaGFsZkV4cGFuZCJfcywg
Um91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0sCisgICAgfTsKKworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gaW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLCB2YWx1ZXMs
CisgICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3Jc
IiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgZGVmYXVsdE1vZGUpOworfQorCiAv
LyBSb3VuZE51bWJlclRvSW5jcmVtZW50ICggeCwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUgKQog
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcm91bmRu
dW1iZXJ0b2luY3JlbWVudAogZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlIHgs
IGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQpAQCAtMzI4LDYgKzM3Niw3IEBA
IGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50
LCBSb3VuZGluZ01vZGUgbW9kZSkKICAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoK
ICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQocXVvdGllbnQpICogaW5jcmVtZW50OwogICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAppbmRleCA3MjQz
YzliYTU4NDMyNjJkMmQwY2JiODE5MzNmNGNkZDEzMDhmYjQ4Li45OGZmZDJhOWI3MjUxOTBkZjAw
NmI4YjNiNmZjNDE2NmU1ZThjNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmgKQEAgLTgxLDEyICs4MSwxNSBAQCBzdHJ1Y3QgUHJlY2lzaW9u
RGF0YSB7CiB9OwogCiBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxVbml0VHlw
ZShTdHJpbmdWaWV3KTsKK1N0cmluZyB0ZW1wb3JhbFVuaXRUb1N0cmluZyhUZW1wb3JhbFVuaXQp
Owogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFsTGFyZ2VzdFVuaXQoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBv
cmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRzLCBUZW1wb3JhbFVuaXQgYXV0b1ZhbHVlKTsKIHN0ZDo6
b3B0aW9uYWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFNtYWxsZXN0VW5pdChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0
PiBkaXNhbGxvd2VkVW5pdHMpOwogc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGVtcG9yYWxGcmFj
dGlvbmFsU2Vjb25kRGlnaXRzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMpOwog
UHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIG9wdGlvbnMpOwordm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5n
QnVpbGRlciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVj
aXNpb24pOwogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChU
ZW1wb3JhbFVuaXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5k
LCBib29sIGluY2x1c2l2ZSk7CitSb3VuZGluZ01vZGUgdGVtcG9yYWxSb3VuZGluZ01vZGUoSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUm91bmRpbmdNb2RlIGRlZmF1bHRNb2Rl
KTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGluY3JlbWVu
dCwgUm91bmRpbmdNb2RlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437329</attachid>
            <date>2021-09-03 18:01:54 -0700</date>
            <delta_ts>2021-09-15 16:48:17 -0700</delta_ts>
            <desc>Various tweaks in preparation for Temporal.Instant</desc>
            <filename>bug-229826-20210903180153.patch</filename>
            <type>text/plain</type>
            <size>14858</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTAyM2I0NjdmZjU4OWU5OTEzNDRmNTNhZTdhODk2ZjI0NzExZjY4Li4yMWIzYjdhNTZjYWRkZmJj
Mjg1YzgzN2EyNTY0ZmZlOGNhZmI5YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOS0wMyAgUGhpbGlwIENoaW1lbnRvICA8cGhpbGlwLmNoaW1lbnRv
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisK
KyAgICAgICAgVmFyaW91cyB0d2Vha3MgYW5kIGltcHJvdmVtZW50cyB0byBleGlzdGluZyBUZW1w
b3JhbCBjb2RlLCB0aGF0IHdpbGwgYmUKKyAgICAgICAgdXNlZCBmb3IgVGVtcG9yYWwuSW5zdGFu
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1
bnRpbWUvSVNPODYwMS5oOgorICAgICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0
b3JbXSk6IEFkZCBhbiBvcGVyYXRvcltdIHRoYXQgaW5kZXhlcyBieQorICAgICAgICAgIFRlbXBv
cmFsVW5pdC4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29u
c3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3ItIGNvbnN0KTog
QWRkIGEgbmVnYXRpb24gb3BlcmF0b3IuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbik6IElt
cHJvdmUgZXJyb3IgbWVzc2FnZSB0byBpbmNsdWRlCisgICAgICAgICAgdGhlIGludmFsaWQgc3Ry
aW5nLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpuZWdhdGVkIGNvbnN0KTogVXNl
IFN1YmR1cmF0aW9uJ3MgbmVnYXRpb24KKyAgICAgICAgICBvcGVyYXRvci4KKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxEdXJhdGlvbjo6cm91bmQgY29uc3QpOiBEZWR1cGxpY2F0ZSBjb2RlIHdpdGgK
KyAgICAgICAgICB0ZW1wb3JhbFJvdW5kaW5nTW9kZSgpLgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6IFRha2UgVGVtcG9yYWxVbml0OjpNaW51dGUgaW50
bworICAgICAgICAgIGFjY291bnQ7IGRlZHVwbGljYXRlIGNvZGUgd2l0aCB0ZW1wb3JhbFJvdW5k
aW5nTW9kZSgpLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyk6IFVz
ZSBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oKS4KKyAgICAgICAgKiBydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRHVyYXRpb25Db25zdHJ1Y3Rvcik6
IEFscGhhYmV0aXplLgorICAgICAgICAoSlNDOjpjcmVhdGVOb3dPYmplY3QpOiBBbHBoYWJldGl6
ZS4KKyAgICAgICAgKEpTQzo6dGVtcG9yYWxVbml0VG9TdHJpbmcpOiBBZGQgYSBmdW5jdGlvbiB0
byBkdW1wIHRoZSBuYW1lIG9mIGEKKyAgICAgICAgICBUZW1wb3JhbFVuaXQsIGUuZy4gZm9yIGVy
cm9yIG1lc3NhZ2VzLgorICAgICAgICAoSlNDOjpzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKTogQWxs
b3cgVGVtcG9yYWxVbml0OjpNaW51dGUgd2hpY2ggaXMKKyAgICAgICAgICByZWxldmFudCB0byBv
dGhlciBUZW1wb3JhbCB0eXBlcy4KKyAgICAgICAgKEpTQzo6Zm9ybWF0U2Vjb25kc1N0cmluZ0Zy
YWN0aW9uKTogTW92ZSBjb2RlIGZyb20gVGVtcG9yYWxEdXJhdGlvbiBpbnRvCisgICAgICAgICAg
YSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIHJldXNlZCBpbiBvdGhlciBUZW1wb3JhbCB0eXBlcy4K
KyAgICAgICAgKEpTQzo6dGVtcG9yYWxSb3VuZGluZ01vZGUpOiBEZWR1cGxpY2F0ZSBjb2RlIHRv
IGdldCB0aGUgcm91bmRpbmdNb2RlCisgICAgICAgICAgcHJvcGVydHkgZnJvbSBhbiBvcHRpb25z
IGJhZy4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisKIDIwMjEtMDktMDMg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIG5vbi11bmlmaWVkIEpTQyBidWlsZCBmaXggZm9sbG93aW5nIDI0MTIyMkBtYWluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IDY3Njg5ZDFjMjQ1YWZl
ZTJhYzI2OTU5YzI5NzBkZDQ5NjNhZTMwMDIuLjA0YTllOTFhZjM4MWY3NDcyOGI2MDExOTU0YzQ0
ZWRmZGRmZGExZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKQEAg
LTQxLDExICs0MSwyMSBAQCBzdHJ1Y3QgRHVyYXRpb24gewogCiAgICAgZG91YmxlJiBvcGVyYXRv
cltdKHNpemVfdCBpKSB7IHJldHVybiBkYXRhW2ldOyB9CiAgICAgY29uc3QgZG91YmxlJiBvcGVy
YXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBkYXRhW2ldOyB9CisgICAgZG91YmxlJiBv
cGVyYXRvcltdKFRlbXBvcmFsVW5pdCB1KSB7IHJldHVybiBkYXRhW3N0YXRpY19jYXN0PHVpbnQ4
X3Q+KHUpXTsgfQorICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShUZW1wb3JhbFVuaXQgdSkg
Y29uc3QgeyByZXR1cm4gZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90Pih1KV07IH0KICAgICBjb25z
dF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEuYmVnaW4oKTsgfQogICAgIGNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEuZW5kKCk7IH0KICAgICB2b2lk
IGNsZWFyKCkgeyBkYXRhLmZpbGwoMCk7IH0KIAogICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCBudW1i
ZXJPZlRlbXBvcmFsVW5pdHM+IGRhdGEgeyB9OworCisgICAgY29uc3RleHByIER1cmF0aW9uIG9w
ZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICBEdXJhdGlvbiByZXN1bHQ7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzOyBpKyspCisgICAg
ICAgICAgICByZXN1bHRbaV0gPSAtZGF0YVtpXTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CiB9OwogCiBzdGQ6Om9wdGlvbmFsPER1cmF0aW9uPiBwYXJzZUR1cmF0aW9uKFN0cmluZ1Zp
ZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uLmNwcAppbmRleCAwZGEyNGE1MjU1N2ViY2RlNThmMzVkZTE4ZDc2YzJlNzJiNjI2ZjhkLi4w
NDA4NWI5MmFhNDQ2ODE1MjU4MjczYWM4YzZjYTAzZGIwOGFkNWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAKICAgICBhdXRvIHBhcnNlZFN1YmR1
cmF0aW9ucyA9IElTTzg2MDE6OnBhcnNlRHVyYXRpb24oc3RyaW5nKTsKICAgICBpZiAoIXBhcnNl
ZFN1YmR1cmF0aW9ucykgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNvdWxkIG5vdCBwYXJzZSBEdXJhdGlvbiBzdHJpbmciX3MpOworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZygiJyJfcywgc3RyaW5n
LCAiJyBpcyBub3QgYSB2YWxpZCBEdXJhdGlvbiBzdHJpbmciX3MpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCkBAIC0yNjUsMTAgKzI2NSw3IEBAIFRlbXBvcmFsRHVyYXRpb246
OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp3aXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiAKIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9u
OjpuZWdhdGVkKCkgY29uc3QKIHsKLSAgICBTdWJkdXJhdGlvbnMgcmVzdWx0OwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzOyBpKyspCi0gICAgICAgIHJl
c3VsdFtpXSA9IC1tX3N1YmR1cmF0aW9uc1tpXTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiAtbV9zdWJkdXJhdGlvbnM7CiB9CiAKIFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9u
cyBUZW1wb3JhbER1cmF0aW9uOjphYnMoKSBjb25zdApAQCAtNDY3LDkgKzQ2NCw3IEBAIFRlbXBv
cmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxs
ZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCk7CiAgICAgVGVtcG9yYWxVbml0
IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihzdGQ6Om1pbihkZWZhdWx0TGFyZ2VzdFVu
aXQsIHNtYWxsZXN0VW5pdCkpOwogCi0gICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9u
PFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
b3VuZGluZ01vZGUsCi0gICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0s
IHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGlu
Z01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFu
ZCB9IH0sCi0gICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwi
Zmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpI
YWxmRXhwYW5kKTsKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2Rl
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgYXV0byBpbmNyZW1lbnQgPSB0
ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJv
dW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKQEAgLTUzMCwxMSArNTI1LDEy
IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKICAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBz
ZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NFUlQoZGF0YS51bml0ID49IFRlbXBv
cmFsVW5pdDo6U2Vjb25kKTsKKyAgICBpZiAoZGF0YS51bml0IDwgVGVtcG9yYWxVbml0OjpTZWNv
bmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFs
bGVzdFVuaXQgbXVzdCBub3QgYmUgXCJtaW51dGVcIiJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQogCi0gICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9k
ZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUs
Ci0gICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9z
LCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5j
IH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCi0gICAg
ICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0
cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAg
YXV0byByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKICAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdl
cmUgZ2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCkBAIC01OTcsMTcgKzU5Myw3IEBAIFN0cmluZyBU
ZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJh
dGlvbnMmIHN1YmR1cmF0CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoYmFs
YW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAgYXV0byBmcmFjdGlvbiA9IHN0ZDo6YWJzKGJhbGFu
Y2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0ZDo6YWJzKGJhbGFuY2VkTWljcm9zZWNvbmRzKSAq
IDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFub3NlY29uZHMpOwotICAgICAgICBpZiAoKCFwcmVj
aXNpb24gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb24gJiYgcHJlY2lzaW9uLnZhbHVlKCkpKSB7
Ci0gICAgICAgICAgICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQoJzAnLCA5LCBm
cmFjdGlvbikpOwotICAgICAgICAgICAgaWYgKHByZWNpc2lvbikKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAo
OSAtIHByZWNpc2lvbi52YWx1ZSgpKSkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgPSBwYWRkZWQubGVuZ3RoKCk7
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFtsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJv
ZXMgLSAxXSA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAgIGxlbmd0aFdpdGhvdXRUcmFpbGlu
Z1plcm9lcy0tOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcocGFk
ZGVkKS5sZWZ0KGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcykpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CisgICAgICAgIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBm
cmFjdGlvbiwgcHJlY2lzaW9uKTsKIAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnUycpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNw
cAppbmRleCBiMjRlM2E5ZTlkYTIyMDI2YzJhM2JmZGIyOGJhZjdjZWUzZDNlZjk3Li4yZjljNWJl
ODFjM2RiNTZmMGE1ODY2ZmMxMWE3OThkNTE5MjA1YThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC00NywxOCArNDcsMTggQEAg
c3RhdGljIEpTVmFsdWUgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+Y2FsZW5kYXJTdHJ1Y3R1cmUo
KS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgY3JlYXRl
Tm93T2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0
ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRl
bXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9i
amVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHJldHVybiBUZW1wb3JhbE5vdzo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbE5vdzo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVP
YmplY3QoKSkpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9y
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZU5vd09iamVj
dChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBv
cmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
Ci0gICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gVGVtcG9yYWxOb3c6OmNyZWF0ZSh2bSwg
VGVtcG9yYWxOb3c6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0
YXRpYyBKU1ZhbHVlIGNyZWF0ZVRpbWVab25lQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCog
b2JqZWN0KQpAQCAtMTQzLDYgKzE0MywyMyBAQCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4g
dGVtcG9yYWxVbml0VHlwZShTdHJpbmdWaWV3IHVuaXQpCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAorU3RyaW5nIHRlbXBvcmFsVW5pdFRvU3RyaW5nKFRlbXBvcmFsVW5pdCB1bml0KQor
eworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpZZWFyOiByZXR1
cm4gInllYXIiX3M7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOiByZXR1cm4gIm1vbnRo
Il9zOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVrOiByZXR1cm4gIndlZWsiX3M7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6OkRheTogcmV0dXJuICJkYXkiX3M7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkhvdXI6IHJldHVybiAiaG91ciJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlu
dXRlOiByZXR1cm4gIm1pbnV0ZSJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBy
ZXR1cm4gInNlY29uZCJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJl
dHVybiAibWlsbGlzZWNvbmQiX3M7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25k
OiByZXR1cm4gIm1pY3Jvc2Vjb25kIl9zOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kOiByZXR1cm4gIm5hbm9zZWNvbmQiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCiAvLyBUb0xhcmdlc3RUZW1wb3JhbFVuaXQgKCBub3JtYWxpemVkT3B0aW9ucywg
ZGlzYWxsb3dlZFVuaXRzLCBmYWxsYmFjayBbICwgYXV0b1ZhbHVlIF0gKQogLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9sYXJnZXN0dGVtcG9yYWx1
bml0CiBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxMYXJnZXN0VW5pdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgc3RkOjppbml0aWFs
aXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRzLCBUZW1wb3JhbFVuaXQgYXV0
b1ZhbHVlKQpAQCAtMjQyLDExICsyNTksMTMgQEAgUHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5n
UHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHQKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxs
ZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1w
b3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBU
ZW1wb3JhbFVuaXQ6OkhvdXIsIFRlbXBvcmFsVW5pdDo6TWludXRlIH0pOworICAgIGF1dG8gc21h
bGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7
IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpX
ZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyIH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoc21hbGxlc3RVbml0KSB7CiAg
ICAgICAgIHN3aXRjaCAoc21hbGxlc3RVbml0LnZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6Ok1pbnV0ZToKKyAgICAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgVGVt
cG9yYWxVbml0OjpNaW51dGUsIDEgfTsKICAgICAgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29u
ZDoKICAgICAgICAgICAgIHJldHVybiB7IDAsIFRlbXBvcmFsVW5pdDo6U2Vjb25kLCAxIH07CiAg
ICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDoKQEAgLTI4MSw2ICszMDAsMjEg
QEAgUHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHQKICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFs
VW5pdDo6TmFub3NlY29uZCwgc3RkOjpwb3coMTAsIDkgLSBkaWdpdHMpIH07CiB9CiAKK3ZvaWQg
Zm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2ln
bmVkIGZyYWN0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb24pCit7CisgICAg
aWYgKCghcHJlY2lzaW9uICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uICYmIHByZWNpc2lvbi52
YWx1ZSgpKSkgeworICAgICAgICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQoJzAn
LCA5LCBmcmFjdGlvbikpOworICAgICAgICBpZiAocHJlY2lzaW9uKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFkZGVkLmxlbmd0aCgpIC0gKDkg
LSBwcmVjaXNpb24udmFsdWUoKSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRv
IGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcyA9IHBhZGRlZC5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIHdoaWxlIChwYWRkZWRbbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzIC0gMV0gPT0gJzAn
KQorICAgICAgICAgICAgICAgIGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcy0tOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQobGVuZ3RoV2l0aG91
dFRyYWlsaW5nWmVyb2VzKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIC8vIE1heGltdW1UZW1w
b3JhbER1cmF0aW9uUm91bmRpbmdJbmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3JhbGR1cmF0aW9u
cm91bmRpbmdpbmNyZW1lbnQKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJ
bmNyZW1lbnQoVGVtcG9yYWxVbml0IHVuaXQpCkBAIC0zMjMsNiArMzU3LDIwIEBAIGRvdWJsZSB0
ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBvcHRpb25zCiAgICAgcmV0dXJuIGluY3JlbWVudDsKIH0KIAorUm91bmRpbmdNb2Rl
IHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBvcHRpb25zLCBSb3VuZGluZ01vZGUgZGVmYXVsdE1vZGUpCit7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUm91
bmRpbmdNb2RlPj4gdmFsdWVzID0geworICAgICAgICB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6
OkNlaWwgfSwKKyAgICAgICAgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwKKyAg
ICAgICAgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwKKyAgICAgICAgeyAiaGFs
ZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0sCisgICAgfTsKKworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gaW50bE9wdGlvbjxSb3VuZGlu
Z01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdN
b2RlLCB2YWx1ZXMsCisgICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWls
XCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgZGVmYXVsdE1v
ZGUpOworfQorCiAvLyBSb3VuZE51bWJlclRvSW5jcmVtZW50ICggeCwgaW5jcmVtZW50LCByb3Vu
ZGluZ01vZGUgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtcm91bmRudW1iZXJ0b2luY3JlbWVudAogZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1l
bnQoZG91YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggNzI0M2M5
YmE1ODQzMjYyZDJkMGNiYjgxOTMzZjRjZGQxMzA4ZmI0OC4uOThmZmQyYTliNzI1MTkwZGYwMDZi
OGIzYjZmYzQxNjZlNWU4YzczOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oCkBAIC04MSwxMiArODEsMTUgQEAgc3RydWN0IFByZWNpc2lvbkRh
dGEgewogfTsKIAogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFsVW5pdFR5cGUo
U3RyaW5nVmlldyk7CitTdHJpbmcgdGVtcG9yYWxVbml0VG9TdHJpbmcoVGVtcG9yYWxVbml0KTsK
IHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbExhcmdlc3RVbml0KEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3Jh
bFVuaXQ+IGRpc2FsbG93ZWRVbml0cywgVGVtcG9yYWxVbml0IGF1dG9WYWx1ZSk7CiBzdGQ6Om9w
dGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxTbWFsbGVzdFVuaXQoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCogb3B0aW9ucywgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4g
ZGlzYWxsb3dlZFVuaXRzKTsKIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRlbXBvcmFsRnJhY3Rp
b25hbFNlY29uZERpZ2l0cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFBy
ZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiBvcHRpb25zKTsKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1
aWxkZXImLCB1bnNpZ25lZCBmcmFjdGlvbiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lz
aW9uKTsKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVt
cG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkaXZpZGVuZCwg
Ym9vbCBpbmNsdXNpdmUpOworUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFJvdW5kaW5nTW9kZSBkZWZhdWx0TW9kZSk7
CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNyZW1lbnQs
IFJvdW5kaW5nTW9kZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437332</attachid>
            <date>2021-09-03 18:10:43 -0700</date>
            <delta_ts>2021-09-15 16:48:19 -0700</delta_ts>
            <desc>WIP - Temporal.Instant - not ready for review</desc>
            <filename>bug-229826-20210903181043.patch</filename>
            <type>text/plain</type>
            <size>67613</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggZWNhMDgzMTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uM2RlODk1
YTgzYmZiNGI3MzQ0YjEzNDIyZTljZWQxNTA5NzkwOGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTExLDYgKzExMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpF
Q1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4ODE5MjdlMTdiZGEy
MzhkN2RhY2VmMWQ2ZWI1YzNjM2I3NDhiMzc3Li42Mjk5YjIxYzA2OGQ2YzBkMjg5NGI0ZTg5ZjA0
ZmI0ZGM2MWIzOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtMTk1LDYgKzE5NSw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3IubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmggXAorICAgIFRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsTm93Lmx1dC5oIFwKICAgICBUZW1wb3JhbE9iamVj
dC5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzMjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0
ZTBmYTFmN2NhLi40MGMxNjYxNDdjOTM0NTBiYzU3ZGU1YmIyMmNkZjZkNjJhMGU3NTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDE3LDYgKzEwMTcsOSBAQCBydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3Bw
CiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcAorcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IDllNDJhZmMxMzNjMDdlM2ZiOTFiODk3
NzU2ZTNhMTU1MTIzYWY5MzcuLjkwNDA5ZWMwMDFkYTVhNmNmNjliZTljODFlN2IwY2UwYzFhMzZh
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC0zOTYs
NSArMzk2LDExIEBAIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9m
ZnNldCkKICAgICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcw
JywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpKTsKIH0KIAorc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBwYXJzZUluc3RhbnQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgLy8g
RklYTUUKKyAgICByZXR1cm4gU2Vjb25kcyB7IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2
MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYw
MS5oCmluZGV4IDA0YTllOTFhZjM4MWY3NDcyOGI2MDExOTU0YzQ0ZWRmZGRmZGExZDAuLjg5OTE0
NTU3NDM0YzQ3OTlhY2I1MjNmNDk0ZWZjMmIxNzgyNmI5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JU084NjAxLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBJU084NjAxIHsKQEAgLTYyLDUgKzYzLDcgQEAgc3Rk
OjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0
aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyk7
CiBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCk7CiAKK3N0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFj
ZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiMmZkZjQ2NDM2ZTg3NzYwNDkwNjQ4
YWZkMDE0MWM4MjIzNjE0OTUxLi4yMzQ5MjAzYjMwYjQ3MzFlMTUwZGZlMzZkMTdiMzZhZDQxZGEz
MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0yMDUsNiArMjA1LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlLmgiCkBAIC0xMjMyLDYgKzEyMzQsMTMgQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbER1cmF0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkdXJhdGlvblByb3RvdHlwZSkp
OwogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9pbnN0YW50U3RydWN0dXJlLmluaXRMYXRl
cigKKyAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7
CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgICAgIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZTo6Y3JlYXRlKGluaXQudm0sIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgaW5zdGFudFByb3RvdHlwZSkpOworICAgICAg
ICAgICAgfSk7CisKICAgICAgICAgbV90aW1lWm9uZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAg
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTIxMTksNiArMjEyOCw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikK
IAogICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9kdXJhdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0
aGlzT2JqZWN0LT5tX2luc3RhbnRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRlYjMzZGJkMTAzMDgz
YTE4ZjQwYmE3YWRjNTY5NTI2MDE0OTdkMjkuLmVhMGI2YzlhNGM4N2ZjMzdiZjNkODUwNmFkMTU3
ZDZjNjVjMzA3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIHB1YmxpYzoKIAogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJlOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJl
OworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2luc3RhbnRT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
dGltZVpvbmVTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9u
PiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKQEAgLTg3Niw2ICs4NzcsNyBAQCBwdWJsaWM6CiAKICAg
ICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRhclN0cnVj
dHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGR1cmF0aW9uU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGlu
c3RhbnRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2luc3RhbnRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CiAgICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDA0MDg1YjkyYWE0NDY4MTUyNTgy
NzNhYzhjNmNhMDNkYjA4YWQ1ZjcuLjRlZTUwZGQ5ZmMzNTM4MjUzY2ExY2YwOWUzMGQzM2UzNjk5
MDg4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uY3BwCkBAIC0xNzAsNiArMTcwLDQ0IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBv
cmFsRHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVh
dGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXJzZWRTdWJkdXJhdGlvbnMudmFsdWUo
KSkpKTsKIH0KIAorLy8gVG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbiAoIHRlbXBvcmFsRHVyYXRp
b25MaWtlLCBkaXNhbGxvd2VkRmllbGRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvbGltaXRlZHRlbXBvcmFsZHVyYXRpb24KK2NvbnN0IFRl
bXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWRE
dXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSwg
c3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRzKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdWJkdXJhdGlvbnMgc3ViZHVyYXRpb25zOworICAg
IGlmICghaXRlbVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IGl0
ZW1WYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGF1dG8gcGFyc2VkU3ViZHVyYXRpb25zID0g
SVNPODYwMTo6cGFyc2VEdXJhdGlvbihzdHJpbmcpOworICAgICAgICBpZiAoIXBhcnNlZFN1YmR1
cmF0aW9ucykgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIG1ha2VTdHJpbmcoc3RyaW5nLCAiIGlzIG5vdCBhIHZhbGlkIER1cmF0aW9uIHN0cmluZyJf
cykpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBzdWJkdXJh
dGlvbnMgPSBXVEZNb3ZlKHBhcnNlZFN1YmR1cmF0aW9ucy52YWx1ZSgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzdWJkdXJhdGlvbnMgPSBmcm9tT2JqZWN0KGdsb2JhbE9iamVjdCwgYXNPYmpl
Y3QoaXRlbVZhbHVlKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgfQorCisgICAgaWYgKCFpc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgeworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5p
dCA6IGRpc2FsbG93ZWRVbml0cykgeworICAgICAgICBpZiAoc3ViZHVyYXRpb25zW3VuaXRdKSB7
CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0
cmluZygiQWRkaW5nICJfcywgdGVtcG9yYWxVbml0VG9TdHJpbmcodW5pdCksICJzIG5vdCBzdXBw
b3J0ZWQgYnkgVGVtcG9yYWwuSW5zdGFudC4gVHJ5IFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUgaW5z
dGVhZCJfcykpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBzdWJkdXJhdGlvbnM7Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFs
RHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVt
VmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDU5MjA0ZGM5
NTM3YWFmNzYwMWUwZThkMTU3MDU2YmRhMTlhZjczNTUuLjc0YjI0NWViYzIwZWNkNzI0MTMwZDVl
NWU2M2M4NmY0ZTg0YjM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b0R1cmF0aW9uKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIGNvbnN0IFN1YmR1cmF0aW9ucyB0b0xp
bWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiAgICAgc3RhdGljIFRlbXBvcmFs
RHVyYXRpb24qIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNW
YWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAKQEAgLTY3
LDYgKzY4LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSB0b3RhbChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKICAgICBTdHJpbmcgdG9TdHJpbmcoc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpudWxsb3B0KSBjb25zdCB7IHJldHVybiB0
b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQorICAgIHN0YXRpYyB2b2lkIGJh
bGFuY2UoU3ViZHVyYXRpb25zJiwgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0KTsKIAogcHJpdmF0
ZToKICAgICBUZW1wb3JhbER1cmF0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ViZHVyYXRpb25zJiYp
OwpAQCAtNzcsNyArNzksNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJv
bU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CiAKICAgICBzdGF0aWMgaW50IHNp
Z24oY29uc3QgU3ViZHVyYXRpb25zJik7Ci0gICAgc3RhdGljIHZvaWQgYmFsYW5jZShTdWJkdXJh
dGlvbnMmLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpOwogICAgIHN0YXRpYyBkb3VibGUgcm91
bmQoU3ViZHVyYXRpb25zJiwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpOwogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3ViZHVyYXRpb25zJiwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmMmE3
ODIyMmZkNzcyZmI0M2Q2NGExNjgxYmU2ZDk4MzA5ZDI5NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKQEAgLTAsMCAr
MSw0NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bE9i
amVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9y
YWxJbnN0YW50KSB9OworCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitUZW1wb3JhbEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBTZWNvbmRzJiBlcG9jaFRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgLCBtX2Vwb2NoVGltZShlcG9jaFRpbWUpCit7Cit9CisKK3ZvaWQgVGVtcG9y
YWxJbnN0YW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKK1RlbXBv
cmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgU2Vjb25kcyYgZXBvY2hUaW1lKQoreworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0uaGVhcCkpIFRl
bXBvcmFsSW5zdGFudCh2bSwgc3RydWN0dXJlLCBlcG9jaFRpbWUpOworICAgIG9iamVjdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKKy8vIElzVmFsaWRFcG9j
aE5hbm9zZWNvbmRzICggZXBvY2hOYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcworYm9v
bCBpc1ZhbGlkRXBvY2hUaW1lKGNvbnN0IFNlY29uZHMmIGVwb2NoVGltZSkKK3sKKyAgICAvLyBG
SVhNRTogcHJlY2lzaW9uCisgICAgcmV0dXJuIGVwb2NoVGltZS5uYW5vc2Vjb25kcygpID49IC04
NjQwMGUxNyAmJiBlcG9jaFRpbWUubmFub3NlY29uZHMoKSA8PSA4NjQwMGUxNzsKK30KKworLy8g
Q3JlYXRlVGVtcG9yYWxJbnN0YW50ICggZXBvY2hOYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0g
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3Jl
YXRldGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5
Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogZXBv
Y2hOYW5vc2Vjb25kcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIC8vIEZJWE1FOiBwcmVjaXNpb24KKyAgICBTZWNvbmRzIGVwb2NoVGltZSA9IFNl
Y29uZHM6OmZyb21OYW5vc2Vjb25kcyhKU0JpZ0ludDo6dG9OdW1iZXJIZWFwKGVwb2NoTmFub3Nl
Y29uZHMpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CisgICAgaWYgKCFpc1ZhbGlkRXBvY2hUaW1lKGVwb2NoVGltZSkpIHsKKyAgICAgICAg
Ly8gRklYTUU6ICVzCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiJXMgZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9y
IFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmpl
Y3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXBvY2hUaW1lKTsKK30KKworLy8gVG9UZW1wb3JhbElu
c3RhbnQgKCBpdGVtICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLXRvdGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5z
dGFudDo6dG9JbnN0YW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRl
bVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVy
aXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KGl0ZW1WYWx1ZSk7CisKKyAgICAvLyBUT0RPOiB3aGVuIFRlbXBvcmFsLlpvbmVk
RGF0ZVRpbWUgbGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsWm9u
ZWREYXRlVGltZT4odm0pKQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFpv
bmVkRGF0ZVRpbWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBTdHJpbmcgc3Ry
aW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEVwb2NoVGltZSA9
IElTTzg2MDE6OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2VkRXBvY2hUaW1l
KSB7CisgICAgICAgIC8vIEZJWE1FOiAlcworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIiVzIGlzIG5vdCBhIHZhbGlkIFRlbXBvcmFsLkluc3RhbnQgc3RyaW5n
Il9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIHBhcnNlZEVwb2NoVGltZS52
YWx1ZSgpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICggaXRlbSApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb20K
K1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0YW50
Pih2bSkpIHsKKyAgICAgICAgU2Vjb25kcyBjbG9uZWQgPSBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50
Kj4oaXRlbVZhbHVlKS0+bV9lcG9jaFRpbWU7CisgICAgICAgIHJldHVybiBUZW1wb3JhbEluc3Rh
bnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGNsb25lZCk7
CisgICAgfQorCisgICAgcmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7
Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVwb2NoU2Vjb25k
cyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5p
bnN0YW50LmZyb21lcG9jaHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50
Ojpmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
ZXBvY2hTZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBl
cG9jaFNlY29uZHMgPSBlcG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVtYmVy
VG9CaWdJbnQgc3RlcCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRzKSkgeworICAg
ICAgICAvLyBGSVhNRTogJXMKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICIlcyBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBzZWNvbmRz
Il9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgU2Vjb25kcyBlcG9j
aFRpbWUge2Vwb2NoU2Vjb25kc307CisgICAgaWYgKCFpc1ZhbGlkRXBvY2hUaW1lKGVwb2NoVGlt
ZSkpIHsKKyAgICAgICAgLy8gRklYTUU6ICVzCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiJXMgZXBvY2ggc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRl
ZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0
dXJlKCksIGVwb2NoVGltZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWls
bGlzZWNvbmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWxsaXNlY29uZHMK
K1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNlY29uZHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pbGxpc2Vjb25kc1Zh
bHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgZXBvY2hNaWxsaXNlY29u
ZHMgPSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJUb0Jp
Z0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vjb25kcykpIHsKKyAg
ICAgICAgLy8gRklYTUU6ICVzCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiJXMgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggbWlsbGlz
ZWNvbmRzIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgU2Vjb25k
cyBlcG9jaFRpbWUgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRz
KTsKKyAgICBpZiAoIWlzVmFsaWRFcG9jaFRpbWUoZXBvY2hUaW1lKSkgeworICAgICAgICAvLyBG
SVhNRTogJXMKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIl
cyBlcG9jaCBtaWxsaXNlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRl
bXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXBv
Y2hUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMg
KCBlcG9jaE1pY3Jvc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJ
bnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9j
aE1pY3Jvc2Vjb25kc1ZhbHVlLnRvQmlnSW50KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBTZWNvbmRzIGVwb2NoVGltZSA9IFNl
Y29uZHM6OmZyb21NaWNyb3NlY29uZHMoYXNIZWFwQmlnSW50KGVwb2NoTWljcm9zZWNvbmRzKS0+
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7CisgICAgaWYgKCFpc1ZhbGlkRXBvY2hUaW1lKGVwb2No
VGltZSkpIHsKKyAgICAgICAgLy8gRklYTUU6ICVzCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiJXMgZXBvY2ggbWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Yg
c3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5p
bnN0YW50U3RydWN0dXJlKCksIGVwb2NoVGltZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTmFub3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2NobmFu
b3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5v
c2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTmFub3Nl
Y29uZHNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBlcG9jaE5h
bm9zZWNvbmRzID0gZXBvY2hOYW5vc2Vjb25kc1ZhbHVlLnRvQmlnSW50KGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBhc0hlYXBC
aWdJbnQoZXBvY2hOYW5vc2Vjb25kcykpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5jb21w
YXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9uZVZhbHVlLCBKU1Zh
bHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiB0d28gPSB0
b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmVwb2NoVGltZSgpID4gdHdvLT5lcG9jaFRp
bWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlmIChvbmUtPmVwb2NoVGlt
ZSgpIDwgdHdvLT5lcG9jaFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKC0xKTsKKyAg
ICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK2NvbnN0IFNlY29uZHMgVGVtcG9yYWxJbnN0YW50
OjphZGQoVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIGR1cmF0aW9uKSBjb25zdAorewor
ICAgIEFTU0VSVCghZHVyYXRpb24ueWVhcnMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5tb250
aHMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi53ZWVrcygpKTsKKyAgICBBU1NFUlQoIWR1cmF0
aW9uLmRheXMoKSk7CisgICAgcmV0dXJuIG1fZXBvY2hUaW1lICsKKyAgICAgICAgU2Vjb25kczo6
ZnJvbUhvdXJzKGR1cmF0aW9uLmhvdXJzKCkpICsKKyAgICAgICAgU2Vjb25kczo6ZnJvbU1pbnV0
ZXMoZHVyYXRpb24ubWludXRlcygpKSArCisgICAgICAgIFNlY29uZHMge2R1cmF0aW9uLnNlY29u
ZHMoKX0gKworICAgICAgICBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKGR1cmF0aW9uLm1pbGxp
c2Vjb25kcygpKSArCisgICAgICAgIFNlY29uZHM6OmZyb21NaWNyb3NlY29uZHMoZHVyYXRpb24u
bWljcm9zZWNvbmRzKCkpICsKKyAgICAgICAgU2Vjb25kczo6ZnJvbU5hbm9zZWNvbmRzKGR1cmF0
aW9uLm5hbm9zZWNvbmRzKCkpOworfQorCitjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJh
dGlvbnMgVGVtcG9yYWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlbXBvcmFsSW5zdGFudCogb3RoZXIsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25z
dAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxH
ZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFs
U21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBz
bWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgVGVtcG9y
YWxVbml0IGRlZmF1bHRMYXJnZXN0VW5pdCA9IHN0ZDo6bWF4KHNtYWxsZXN0VW5pdCwgVGVtcG9y
YWxVbml0OjpTZWNvbmQpOworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBvcmFsTGFyZ2VzdFVuaXQo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0sIGRlZmF1bHRMYXJnZXN0VW5pdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVu
aXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRMYXJnZXN0VW5pdCk7CisKKyAgICBpZiAoc21h
bGxlc3QgPCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRp
bmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3Vu
ZGluZ01vZGU6OkhhbGZFeHBhbmQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBkb3VibGUgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVu
aXQpLCBmYWxzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IFNlY29uZHMgcm91bmRlZERpZmYgPSBkaWZmZXJlbmNlKG1fZXBvY2hUaW1lLCBvdGhlci0+bV9l
cG9jaFRpbWUsIGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworICAgIFRl
bXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyByZXN1bHQ7CisgICAgcmVzdWx0LnNldE5hbm9z
ZWNvbmRzKHJvdW5kZWREaWZmLm5hbm9zZWNvbmRzKCkpOworICAgIFRlbXBvcmFsRHVyYXRpb246
OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
Ly8gRGlmZmVyZW5jZUluc3RhbnQgKCBuczEsIG5zMiwgcm91bmRpbmdJbmNyZW1lbnQsIHNtYWxs
ZXN0VW5pdCwgcm91bmRpbmdNb2RlICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLWRpZmZlcmVuY2VpbnN0YW50Citjb25zdCBTZWNvbmRzIFRlbXBv
cmFsSW5zdGFudDo6ZGlmZmVyZW5jZShjb25zdCBTZWNvbmRzJiBvbmUsIGNvbnN0IFNlY29uZHMm
IHR3bywgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSBy
b3VuZGluZ01vZGUpCit7CisgICAgcmV0dXJuIHJvdW5kKHR3byAtIG9uZSwgaW5jcmVtZW50LCB1
bml0LCByb3VuZGluZ01vZGUpOworfQorCitjb25zdCBTZWNvbmRzIFRlbXBvcmFsSW5zdGFudDo6
cm91bmQoY29uc3QgU2Vjb25kcyYgZXBvY2hUaW1lLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3Jh
bFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKK3sKKyAgICBkb3VibGUgaW5j
cmVtZW50TnMgPSBpbmNyZW1lbnQ7CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6OkhvdXI6IGluY3JlbWVudE5zICo9IDM2MDAgKiAxZTk7IGJyZWFrOworICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IGluY3JlbWVudE5zICo9IDYwICogMWU5OyBicmVhazsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBpbmNyZW1lbnROcyAqPSAxZTk7IGJyZWFr
OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogaW5jcmVtZW50TnMgKj0gMWU2
OyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IGluY3JlbWVudE5z
ICo9IDFlMzsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAg
ICByZXR1cm4gU2Vjb25kczo6ZnJvbU5hbm9zZWNvbmRzKHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
ZXBvY2hUaW1lLm5hbm9zZWNvbmRzKCksIGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpKTsKK30K
Kworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVu
aXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5p
dDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHJldHVy
biAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVybiA4NjQwMDsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0ZTc7CisgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitj
b25zdCBTZWNvbmRzIFRlbXBvcmFsSW5zdGFudDo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBhdXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwg
VGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0
IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
ICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3Jh
bFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRl
bXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpI
YWxmRXhwYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
ZG91YmxlIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCBtYXhpbXVtSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIHRydWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gcm91bmQobV9lcG9j
aFRpbWUsIGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworfQorCisvLyBU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90
b3R5cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25z
T2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9T
dHJpbmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHI7CisgICAgSlNWYWx1
ZSB0aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+dGltZVpvbmUpOworICAgIGlmICghdGltZVpvbmVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgdGhpcyB3aGVuIFRlbXBvcmFsLlRpbWVab25lIGxhbmRz
CisgICAgICAgIC8vIHRpbWVab25lID0gVGVtcG9yYWxUaW1lWm9uZTo6ZnJvbShnbG9iYWxPYmpl
Y3QsIHRpbWVab25lVmFsdWUpOworICAgICAgICAvLyBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIH0KKworICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQ
cmVjaXNpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFs
Um91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpUcnVuYyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIE5vIG5lZWQg
dG8gbWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4K
KyAgICBpZiAoIWRhdGEucHJlY2lzaW9uICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6
OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcodGltZVpvbmUpOworCisgICAgU2Vjb25k
cyBuZXdFcG9jaFRpbWUgPSByb3VuZChtX2Vwb2NoVGltZSwgZGF0YS5pbmNyZW1lbnQsIGRhdGEu
dW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICByZXR1cm4gdG9TdHJpbmcobmV3RXBvY2hUaW1lLCB0
aW1lWm9uZSwgZGF0YSk7Cit9CisKKy8vIFRlbXBvcmFsSW5zdGFudFRvU3RyaW5nICggaW5zdGFu
dCwgdGltZVpvbmUsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC10ZW1wb3JhbGluc3RhbnR0b3N0cmluZworU3RyaW5nIFRlbXBv
cmFsSW5zdGFudDo6dG9TdHJpbmcoY29uc3QgU2Vjb25kcyYgZXBvY2hUaW1lLCBKU09iamVjdCog
dGltZVpvbmUsIFByZWNpc2lvbkRhdGEgcHJlY2lzaW9uKQoreworICAgIC8vIEZJWE1FOiBNaXNz
aW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IF9vdXRwdXRUaW1lWm9uZV8g
YmUgX3RpbWVab25lXy4KKyAgICAvLyAxLiBJZiBfb3V0cHV0VGltZVpvbmVfIGlzICp1bmRlZmlu
ZWQqLCB0aGVuCisgICAgLy8gICAxLiBTZXQgX291dHB1dFRpbWVab25lXyB0byAhIENyZWF0ZVRl
bXBvcmFsVGltZVpvbmUoKiJVVEMiKikuCisgICAgLy8gMS4gTGV0IF9pc29DYWxlbmRhcl8gYmUg
ISBHZXRJU084NjAxQ2FsZW5kYXIoKS4KKyAgICAvLyAxLiBMZXQgX2RhdGVUaW1lXyBiZSA/IEJ1
aWx0aW5UaW1lWm9uZUdldFBsYWluRGF0ZVRpbWVGb3IoX291dHB1dFRpbWVab25lXywgX2luc3Rh
bnRfLCBfaXNvQ2FsZW5kYXJfKS4KKworICAgIEdyZWdvcmlhbkRhdGVUaW1lIGdyZWdvcmlhbkRh
dGVUaW1lIHtlcG9jaFRpbWUubWlsbGlzZWNvbmRzKCksIExvY2FsVGltZU9mZnNldCB7IH19Owor
CisgICAgLy8gTWF4aW11bSBhbW91bnQgb2Ygc3BhY2Ugd2UgbmVlZCBpbiB0aGUgc2ltcGxlIGZv
cm1hdHRpbmcgYnVmZmVyOgorICAgIC8vIDcgKG1heC4gZGlnaXRzIGluIHllYXIpCisgICAgLy8g
KyAzICogNCAoMiBkaWdpdHMgYW5kIDEgc2VwYXJhdG9yIGVhY2ggZm9yIG1vbnRoLCBkYXksIGhv
dXIsIG1pbnV0ZSkKKyAgICAvLyArIDEgZm9yIG51bGwgdGVybWluYXRpb24gPSAyMC4KKyAgICBj
aGFyIGJ1ZmZlclsyMF07CisgICAgLy8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0aGUgYm91bmRz
IG9mIDAgYW5kIDk5OTkgaW5jbHVzaXZlIHdlIHdhbnQgdG8gdXNlCisgICAgLy8gdGhlIGV4dGVu
ZGVkIHllYXIgZm9ybWF0IChQYWRJU09ZZWFyKS4KKyAgICBpbnQgY2hhcmFjdGVyc1dyaXR0ZW47
CisgICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0
ZVRpbWUueWVhcigpIDwgMTAwMCkKKyAgICAgICAgY2hhcmFjdGVyc1dyaXR0ZW4gPSBzbnByaW50
ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJSswN2QtJTAyZC0lMDJkVCUwMmQ6JTAyZCIsIGdy
ZWdvcmlhbkRhdGVUaW1lLnllYXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGgoKSArIDEsIGdy
ZWdvcmlhbkRhdGVUaW1lLm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVUaW1lLmhvdXIoKSwgZ3Jl
Z29yaWFuRGF0ZVRpbWUubWludXRlKCkpOworICAgIGVsc2UKKyAgICAgICAgY2hhcmFjdGVyc1dy
aXR0ZW4gPSBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJTA0ZC0lMDJkLSUwMmRU
JTAyZDolMDJkIiwgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpLCBncmVnb3JpYW5EYXRlVGltZS5t
b250aCgpICsgMSwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0ZVRp
bWUuaG91cigpLCBncmVnb3JpYW5EYXRlVGltZS5taW51dGUoKSk7CisgICAgQVNTRVJUKGNoYXJh
Y3RlcnNXcml0dGVuID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyc1dyaXR0
ZW4pIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hh
cmFjdGVyc1dyaXR0ZW4pID49IHNpemVvZihidWZmZXIpKQorICAgICAgICByZXR1cm4gIiJfczsK
KworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChidWZmZXIp
OworCisgICAgaW50IGZyYWN0aW9uID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RkOjpmbW9kKGVw
b2NoVGltZS5uYW5vc2Vjb25kcygpLCBuc1BlclNlY29uZCkpOworICAgIGlmIChmcmFjdGlvbiA8
IDApCisgICAgICAgIGZyYWN0aW9uICs9IG5zUGVyU2Vjb25kOworCisgICAgZm9ybWF0U2Vjb25k
c1N0cmluZ1BhcnQoYnVpbGRlciwgZ3JlZ29yaWFuRGF0ZVRpbWUuc2Vjb25kKCksIGZyYWN0aW9u
LCBwcmVjaXNpb24pOworCisgICAgLy8gRklYTUU6IE1pc3NpbmcsIHJlbGllcyBvbiBUaW1lWm9u
ZToKKyAgICAvLyAxLiBJZiBfdGltZVpvbmVfIGlzICp1bmRlZmluZWQqLCB0aGVuCisgICAgLy8g
ICAxLiBMZXQgX3RpbWVab25lU3RyaW5nXyBiZSAqIloiKi4KKyAgICAvLyAxLiBFbHNlLAorICAg
IC8vICAgMS4gTGV0IF90aW1lWm9uZVN0cmluZ18gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRPZmZz
ZXRTdHJpbmdGb3IoX3RpbWVab25lXywgX2luc3RhbnRfKS4KKyAgICBidWlsZGVyLmFwcGVuZCgn
WicpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhM2Q5NTUyYmNkNzdkYmFmMDMyMmFiYTk1MWEyYzMxNDY0YzQyZTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnQuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2bS50ZW1wb3JhbEluc3RhbnRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAg
IHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IFNl
Y29uZHMmKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpT
R2xvYmFsT2JqZWN0KiwgSlNCaWdJbnQqLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQq
IHRvSW5zdGFudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3Jh
bEluc3RhbnQqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVt
cG9yYWxJbnN0YW50KiBmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlsbGlzZWNvbmRzKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVw
b2NoTWljcm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRl
bXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSwgSlNWYWx1ZSk7CisKKyAgICBjb25zdCBTZWNvbmRzJiBlcG9jaFRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2Vwb2NoVGltZTsgfQorCisgICAgY29uc3QgU2Vjb25kcyBhZGQoVGVtcG9yYWxEdXJh
dGlvbjo6U3ViZHVyYXRpb25zKSBjb25zdDsKKyAgICBjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpT
dWJkdXJhdGlvbnMgZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsSW5zdGFudCos
IEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgY29uc3QgU2Vjb25kcyByb3VuZChKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJp
bmcoSlNPYmplY3QqIHRpbWVab25lID0gbnVsbHB0ciwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24g
PSB7IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gdG9TdHJpbmcobV9lcG9jaFRpbWUsIHRpbWVab25lLCBwcmVj
aXNpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1
Y3R1cmUqLCBjb25zdCBTZWNvbmRzJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
Jik7CisgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCos
IEpTT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkaWZmZXJlbmNlKGNvbnN0
IFNlY29uZHMmLCBjb25zdCBTZWNvbmRzJiwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
LCBSb3VuZGluZ01vZGUpOworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJvdW5kKGNvbnN0IFNl
Y29uZHMmLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7Cisg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTZWNvbmRzJiwgSlNPYmplY3QqIHRpbWVa
b25lLCBQcmVjaXNpb25EYXRhKTsKKworICAgIC8vIEZJWE1FOiBlcG9jaCBuYW5vc2Vjb25kcyBo
YXMgYSByYW5nZSBvZiDCsTguNjQgw5cgMTBeMjEsIHdoaWNoIHJlcXVpcmVzIGF0CisgICAgLy8g
bGVhc3QgNzQgYml0cyB0byBzdG9yZS4gVGhpcyBpcyBwcm9iYWJseSB0aGUgd3JvbmcgdHlwZSB0
byBzdG9yZSBpdCBpbjsKKyAgICAvLyBtYXliZSBhIFdURjo6U2Vjb25kcyBpbnN0YW5jZSBob2xk
aW5nIHVwIHRvIG1pbGxpc2Vjb25kIHByZWNpc2lvbiBhbmQKKyAgICAvLyB0aGVuIGFuIGludDMy
X3Qgb2YgdXAgdG8gMTBeNiBuYW5vc2Vjb25kcz8KKyAgICBTZWNvbmRzIG1fZXBvY2hUaW1lOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTMwZTk1MTA3ZDMyYTVhZDhkYTRhZTI5ZGFiMGJkZDFlYmRmYzlhOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20p
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNv
bmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0NvbXBhcmUpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCAmdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNl
IGZvciBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yVGFibGUKKyAgZnJvbSAgICAgICAgICAgICAgICAgICB0ZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgZnJvbUVwb2NoU2Vjb25kcyAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNGcm9tRXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVw
b2NoTWlsbGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hN
aWxsaXNlY29uZHMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTWljcm9zZWNvbmRz
ICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTmFub3NlY29uZHMgICB0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgY29tcGFyZSAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1
bmNDb21wYXJlICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKK0BlbmQKKyovCisK
K1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZSogaW5zdGFudFByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yPih2bS5oZWFw
KSkgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3Ry
dWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBpbnN0YW50UHJvdG90eXBlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGNhbGxUZW1wb3JhbEluc3RhbnQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50KTsKKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3I6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbEluc3RhbnQsIGNvbnN0
cnVjdFRlbXBvcmFsSW5zdGFudCkKK3sKK30KKwordm9pZCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGlu
c3RhbnRQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJJbnN0
YW50Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIGluc3RhbnRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKKyAgICBpbnN0YW50UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0
KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVS
RSh2bSwgaW5zdGFudFN0cnVjdHVyZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25k
cyBhcmd1bWVudCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgZXBvY2hO
YW5vc2Vjb25kcyA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9CaWdJbnQoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50
Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgYXNIZWFwQmlnSW50KGVwb2NoTmFub3Nl
Y29uZHMpLCBzdHJ1Y3R1cmUpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxs
VGVtcG9yYWxJbnN0YW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW5zdGFudCIpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNlY29u
ZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hN
aWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODdkOWRlMzIwMWIyYzgz
YWYzZGVkZTJhMjE4OTVhOGYyZjY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTsKKworY2xhc3MgVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKK307CitTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvciwg
SW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjk3NWE2M2U2NWY4Y2EwMzc3NGJlOTEzYjgyN2M2ZTQxZTBmMDU2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
RnVuY0FkZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
Um91bmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VG9Mb2NhbGVTdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdl
dHRlckVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRl
ckVwb2NoTmFub3NlY29uZHMpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJhc2U6
OnNfaW5mbywgJmluc3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxlCisg
IGFkZCAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAgICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAgdGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgdW50aWwgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNVbnRpbCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAg
ICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1JvdW5kICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
ZXF1YWxzICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMAorICB0b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1RvSlNPTiAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJp
bmcgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgICBE
b250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBl
cG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNv
bmRzICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWlsbGlz
ZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyAg
RG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMgIHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxS
ZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHJldHVybiBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0aWFs
aXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7CisgICAg
VGVtcG9yYWxVbml0OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9y
YWxVbml0OjpXZWVrLAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAorfQorCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJk
dXJhdGlvbnMgZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVu
aXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgY29uc3Qg
U2Vjb25kcyBuZXdFcG9jaFRpbWUgPSBpbnN0YW50LT5hZGQoZHVyYXRpb24pOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogdXNlIHRyeUNyZWF0
ZUlmVmFsaWQgaW5zdGVhZCBiZWxvdworICAgIGlmICghaXNWYWxpZEVwb2NoVGltZShuZXdFcG9j
aFRpbWUpKSB7CisgICAgICAgIC8vIEZJWE1FOiAlcworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIiVzIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNpZGUgb2Yg
c3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgbmV3RXBvY2hU
aW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jU3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5z
dGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7
CisKKyAgICBjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgZHVyYXRpb24gPSBU
ZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgY29uc3QgU2Vjb25kcyBuZXdFcG9jaFRpbWUg
PSBpbnN0YW50LT5hZGQoLWR1cmF0aW9uKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgLy8gRklYTUU6IHVzZSB0cnlDcmVhdGVJZlZhbGlkIGluc3RlYWQgYmVs
b3cKKyAgICBpZiAoIWlzVmFsaWRFcG9jaFRpbWUobmV3RXBvY2hUaW1lKSkgeworICAgICAgICAv
LyBGSVhNRTogJXMKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICIlcyBlcG9jaCBuYW5vc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3Ig
VGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIG5ld0Vwb2NoVGltZSkpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBv
dGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgVGVtcG9y
YWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIHJlc3VsdCA9IGluc3RhbnQtPmRpZmZlcmVuY2UoZ2xv
YmFsT2JqZWN0LCBvdGhlciwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUocmVz
dWx0KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS5zaW5jZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisg
ICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIHJlc3VsdCA9IG90
aGVyLT5kaWZmZXJlbmNlKGdsb2JhbE9iamVjdCwgaW5zdGFudCwgb3B0aW9ucyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3Ry
dWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIEluc3RhbnQiX3MpOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKKyAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfcyk7CisKKyAgICBT
ZWNvbmRzIG5ld0Vwb2NoVGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9u
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFcG9jaFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
aW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9
IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQtPmVwb2NoVGltZSgpID09IG90
aGVyLT5lcG9jaFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50
b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5zdGFudC0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKCkp
KSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5z
dGFudCJfcyk7CisKKyAgICAvLyBGSVhNRTogSW50bAorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZygpKSkp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
RnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnZhbHVlT2YgbXVz
dCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIEluc3RhbnQgdmFsdWVzLCB1c2UgVGVtcG9yYWwu
SW5zdGFudC5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoU2Vj
b25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnN0YW50LT5lcG9jaFRpbWUoKS5zZWNvbmRz
KCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXBvY2hUaW1lKCkubWlsbGlzZWNvbmRz
KCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWNyb3NlY29uZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKGds
b2JhbE9iamVjdCwgaW5zdGFudC0+ZXBvY2hUaW1lKCkubWljcm9zZWNvbmRzKCkpKSk7Cit9CisK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBp
bnN0YW50LT5lcG9jaFRpbWUoKS5uYW5vc2Vjb25kcygpKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhkZGZiMTQ2OTg5NzhiOGMwN2UxOGIy
MGVjOTNkMzkyZDc5ODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcAppbmRleCAyZjljNWJlODFjM2RiNTZmMGE1ODY2ZmMxMWE3OThkNTE5MjA1
YThkLi5iMDk4ZjhjMTcxZDY1YTY5NTk3YzFiMTljMTg0MDZmZWY1ZGVmZGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0zMiw2
ICszMiw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsTm93LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIgpAQCAtNTQsNiArNTYsMTMgQEAgc3Rh
dGljIEpTVmFsdWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBv
YmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+
c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlSW5z
dGFudENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3Jh
bE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3Qp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJl
KCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0
ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmpl
Y3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAg
LTc4LDYgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBAYmVnaW4gdGVtcG9yYWxPYmplY3RUYWJs
ZQogICBDYWxlbmRhciAgICAgICBjcmVhdGVDYWxlbmRhckNvbnN0cnVjdG9yICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgRHVyYXRpb24gICAgICAgY3JlYXRlRHVyYXRpb25Db25z
dHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIEluc3RhbnQgICAgICAg
IGNyZWF0ZUluc3RhbnRDb25zdHJ1Y3RvciAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFj
awogICBOb3cgICAgICAgICAgICBjcmVhdGVOb3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpvbmUgICAgICAgY3JlYXRlVGltZVpvbmVDb25z
dHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiBAZW5kCkBAIC0zMTUsNiAr
MzI1LDE3IEBAIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6CiAgICAgfQogfQogCisvLyBGb3JtYXRT
ZWNvbmRzU3RyaW5nUGFydCAoIHNlY29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jvc2Vjb25kLCBuYW5v
c2Vjb25kLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtZm9ybWF0c2Vjb25kc3N0cmluZ3BhcnQKK3ZvaWQgZm9ybWF0U2Vjb25k
c1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgc2Vjb25kLCB1bnNp
Z25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7CisgICAgaWYgKHByZWNp
c2lvbi51bml0ID09IFRlbXBvcmFsVW5pdDo6TWludXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBidWlsZGVyLmFwcGVuZCgnOicsIHBhZCgnMCcsIDIsIHNlY29uZCkpOworICAgIGZvcm1hdFNl
Y29uZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlvbiwgcHJlY2lzaW9uLnByZWNpc2lv
bik7Cit9CisKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9uUm91bmRpbmdJbmNyZW1lbnQgKCB1
bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LW1heGltdW10ZW1wb3JhbGR1cmF0aW9ucm91bmRpbmdpbmNyZW1lbnQKIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0IHVuaXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAppbmRleCA5OGZm
ZDJhOWI3MjUxOTBkZjAwNmI4YjNiNmZjNDE2NmU1ZThjNzM5Li40NWRhYjI3OTM1ODFhYjY3ZDM5
MzMyZTgwZjRlNTI1N2U5N2JiODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmgKQEAgLTg3LDYgKzg3LDcgQEAgc3RkOjpvcHRpb25hbDxUZW1w
b3JhbFVuaXQ+IHRlbXBvcmFsU21hbGxlc3RVbml0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
IG9wdGkKIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRlbXBvcmFsRnJhY3Rpb25hbFNlY29uZERp
Z2l0cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFByZWNpc2lvbkRhdGEg
c2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25z
KTsKIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImLCB1bnNp
Z25lZCBmcmFjdGlvbiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKTsKK3ZvaWQg
Zm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIHNlY29uZCwg
dW5zaWduZWQgZnJhY3Rpb24sIFByZWNpc2lvbkRhdGEpOwogc3RkOjpvcHRpb25hbDxkb3VibGU+
IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRlbXBvcmFs
Um91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1c2l2ZSk7CiBSb3VuZGluZ01v
ZGUgdGVtcG9yYWxSb3VuZGluZ01vZGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9u
cywgUm91bmRpbmdNb2RlIGRlZmF1bHRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCAwMmYxODk3YjBmMzkxODU2MGI1MDUzMTlkNmU0NjFiZGI1ZDcxMGRkLi44ZjFi
YjQ3ODRhNWY4ZjVjZWQ2NWNhOWY4NzhjMDEyMmNiMWY0ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC0xNjQsNiArMTY0LDcgQEAKICNpbmNsdWRlICJTeW1ib2xPYmpl
Y3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxE
dXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJU
aHVua0dlbmVyYXRvcnMuaCIKQEAgLTE2MjMsNiArMTYyNCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGludGxTZWdt
ZW50SXRlCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21l
bnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudGVy
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1Nw
YWNlLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50cykKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsSW5zdGFudCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxl
ZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CmluZGV4IDFlNzI1Y2UzNzQ4NzNlMDA3ZDFiMDNmNTQ5NTZjNTAyMzA0YzZiMzcuLjA0NzcxMzY2
YTMxMDNjN2Y5YmZlYWQ1YWRkMjBhZmE3ZDgyOTM1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaApAQCAtMTg2LDYgKzE4Niw3IEBAIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3Mg
U3ltYm9sOwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2NsYXNzIFRlbXBvcmFsSW5zdGFudDsK
IGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBj
bGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MjEsNiArNjIyLDcgQEAgcHVibGljOgog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0
aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3Jh
bEluc3RhbnRTcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0Rh
dGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4ZWFiYTQ2NmI2ZTZjMGFkNjZkYzAyZjUyNTc0MS4u
M2MwMDhlOWY1ZmRhMjdkOThhMGE5ZTI1NWYzNDFjM2FiYzA1ZWZiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBA
IC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgaG91cnNQZXJEYXkgPSAy
NC4wOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWludXRlc1BlckhvdXIgPSA2MC4wOwogc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUgc2Vjb25kc1Blck1pbnV0ZSA9IDYwLjA7CiBzdGF0aWMgY29u
c3RleHByIGRvdWJsZSBtc1BlclNlY29uZCA9IDEwMDAuMDsKK3N0YXRpYyBjb25zdGV4cHIgZG91
YmxlIG5zUGVyU2Vjb25kID0gMWU5Owogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbXNQZXJNb250
aCA9IDI1OTIwMDAwMDAuMDsKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIHNlY29uZHNQZXJIb3Vy
ID0gc2Vjb25kc1Blck1pbnV0ZSAqIG1pbnV0ZXNQZXJIb3VyOwogc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgc2Vjb25kc1BlckRheSA9IHNlY29uZHNQZXJIb3VyICogaG91cnNQZXJEYXk7CkBAIC00
MDcsNiArNDA4LDcgQEAgdXNpbmcgV1RGOjptc1RvWWVhcjsKIHVzaW5nIFdURjo6bXNUb0RheXM7
CiB1c2luZyBXVEY6Om1zVG9NaW51dGVzOwogdXNpbmcgV1RGOjptc1RvSG91cnM7Cit1c2luZyBX
VEY6Om5zUGVyU2Vjb25kOwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RGOjpz
ZWNvbmRzUGVyTWludXRlOwogdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRD
aGFyYWN0ZXJzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438302</attachid>
            <date>2021-09-15 16:48:22 -0700</date>
            <delta_ts>2021-09-15 16:55:29 -0700</delta_ts>
            <desc>Various tweaks in preparation for Temporal.Instant</desc>
            <filename>bug-229826-20210915164821.patch</filename>
            <type>text/plain</type>
            <size>10540</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTQ2OTQzYWE3ZmQzMWE3YjJiNTdiMmI1MmNkZmUxMjdlM2VhMzA3Li5lOTU5NDdkNTRjOTUzMzZh
MGRmNjZlZDA5Mzg4ODNmNjliMDcyOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMS0wOS0wMyAgUGhpbGlwIENoaW1lbnRvICA8cGhpbGlwLmNoaW1lbnRv
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisK
KyAgICAgICAgVmFyaW91cyB0d2Vha3MgYW5kIGltcHJvdmVtZW50cyB0byBleGlzdGluZyBUZW1w
b3JhbCBjb2RlLCB0aGF0IHdpbGwgYmUKKyAgICAgICAgdXNlZCBmb3IgVGVtcG9yYWwuSW5zdGFu
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1
bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlQnJhY2tldGVk
QW5ub3RhdGlvbik6IFJlbW92ZSByZWR1bmRhbnQgV1RGTW92ZSB0bworICAgICAgICAgIGVsaW1p
bmF0ZSBjb21waWxlciB3YXJuaW5nLgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSk6IEFkZCBhbiBvcGVyYXRv
cltdIHRoYXQgaW5kZXhlcyBieQorICAgICAgICAgIFRlbXBvcmFsVW5pdC4KKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246
OnRvSVNPODYwMUR1cmF0aW9uKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHRvCisgICAgICAgICAg
aW5jbHVkZSB0aGUgaW52YWxpZCBzdHJpbmcuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKTogVXNlIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbigpLgorICAgICAg
ICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVEdXJh
dGlvbkNvbnN0cnVjdG9yKTogQWxwaGFiZXRpemUuCisgICAgICAgIChKU0M6OmNyZWF0ZU5vd09i
amVjdCk6IEFscGhhYmV0aXplLgorICAgICAgICAoSlNDOjp0ZW1wb3JhbFVuaXRUb1N0cmluZyk6
IEFkZCBhIGZ1bmN0aW9uIHRvIGR1bXAgdGhlIG5hbWUgb2YgYQorICAgICAgICAgIFRlbXBvcmFs
VW5pdCwgZS5nLiBmb3IgZXJyb3IgbWVzc2FnZXMuCisgICAgICAgIChKU0M6OmZvcm1hdFNlY29u
ZHNTdHJpbmdGcmFjdGlvbik6IE1vdmUgY29kZSBmcm9tIFRlbXBvcmFsRHVyYXRpb24gaW50bwor
ICAgICAgICAgIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSByZXVzZWQgaW4gb3RoZXIgVGVtcG9y
YWwgdHlwZXMuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorCiAyMDIxLTA5
LTE0ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTm9u
LXVuaWZpZWQgYnVpbGQgZml4ZXMsIG1pZCBTZXB0ZW1iZXIgMjAyMSBlZGl0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IDgxODE1NzgwMmI5OWY1ODQ3
ZDRlOTNjZjhmNGU4MTdkMDY2MDcwMWUuLmU1MTc2N2VlNjAxZjg2MTdmYmJiNzk5ZWMzNzM1Njhm
YTNiOWJhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2
MDEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBA
IC01NzYsNyArNTc2LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxWZWN0b3I8TENo
YXI+LCBpbnQ2NF90Pj4gcGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm8KICAgICAgICAgaWYgKCpi
dWZmZXIgIT0gJ10nKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
YnVmZmVyLmFkdmFuY2UoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSVNPODYwMS5oCmluZGV4IGRhMzczNDExMzZjYTI1YjM0OWYyNGVhZTc2Zjk1ODI0YjMy
ZjkxNzEuLmU4ZmUyODIxZWY4NjdiMjk2NDhhMmM0MjBiNDMxMDZhZjM0MTljZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKQEAgLTYxLDYgKzYxLDggQEAgcHVibGlj
OgogCiAgICAgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBtX2RhdGFbaV07
IH0KICAgICBjb25zdCBkb3VibGUmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YVtpXTsgfQorICAgIGRvdWJsZSYgb3BlcmF0b3JbXShUZW1wb3JhbFVuaXQgdSkgeyBy
ZXR1cm4gbV9kYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KHUpXTsgfQorICAgIGNvbnN0IGRvdWJs
ZSYgb3BlcmF0b3JbXShUZW1wb3JhbFVuaXQgdSkgY29uc3QgeyByZXR1cm4gbV9kYXRhW3N0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHUpXTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZmls
bCgwKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uLmNwcAppbmRleCA1NjVkN2IwMjI4YmFhYTUzMDQ0M2NlZjZkNmU3Y2VlMzE5YmRkZTg3
Li4yNmZiMGE2NmU2YWIwYmE0MGZjYTg4ZmVjMDM5Yjc4ZmFmM2Q2N2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApAQCAtMTQz
LDcgKzE0Myw3IEBAIElTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnRvSVNPODYw
MUR1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKICAgICAgICAgYXV0byBwYXJz
ZWREdXJhdGlvbiA9IElTTzg2MDE6OnBhcnNlRHVyYXRpb24oc3RyaW5nKTsKICAgICAgICAgaWYg
KCFwYXJzZWREdXJhdGlvbikgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDb3VsZCBub3QgcGFyc2UgRHVyYXRpb24gc3RyaW5nIl9zKTsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCIn
Il9zLCBzdHJpbmcsICInIGlzIG5vdCBhIHZhbGlkIER1cmF0aW9uIHN0cmluZyJfcykpOwogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogCkBAIC01OTgsMTcgKzU5OCw3IEBAIFN0
cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBJU084NjAxOjpEdXJhdGlvbiYg
ZHVyYXRpb24sIHN0ZDo6dHVwbGU8CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVn
ZXIoYmFsYW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAgYXV0byBmcmFjdGlvbiA9IHN0ZDo6YWJz
KGJhbGFuY2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0ZDo6YWJzKGJhbGFuY2VkTWljcm9zZWNv
bmRzKSAqIDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFub3NlY29uZHMpOwotICAgICAgICBpZiAo
KHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvICYmIGZyYWN0aW9uKSB8fCAocHJlY2lz
aW9uVHlwZSA9PSBQcmVjaXNpb246OkZpeGVkICYmIHByZWNpc2lvblZhbHVlKSkgewotICAgICAg
ICAgICAgYXV0byBwYWRkZWQgPSBtYWtlU3RyaW5nKCcuJywgcGFkKCcwJywgOSwgZnJhY3Rpb24p
KTsKLSAgICAgICAgICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQpCi0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFk
ZGVkLmxlbmd0aCgpIC0gKDkgLSBwcmVjaXNpb25WYWx1ZSkpKTsKLSAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzID0gcGFk
ZGVkLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHdoaWxlIChwYWRkZWRbbGVuZ3RoV2l0aG91
dFRyYWlsaW5nWmVyb2VzIC0gMV0gPT0gJzAnKQotICAgICAgICAgICAgICAgICAgICBsZW5ndGhX
aXRob3V0VHJhaWxpbmdaZXJvZXMtLTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmdWaWV3KHBhZGRlZCkubGVmdChsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rp
b24oYnVpbGRlciwgZnJhY3Rpb24sIHByZWNpc2lvbik7CiAKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1MnKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE9iamVjdC5jcHAKaW5kZXggYTRlNGVjNjE1YjMxODY2ODQ1YjBiMWRjZGZjZTVkYjQ4NDg5
YjBkOC4uNTkxMDdkOWQ3NGQ2ZjU4OWVjZmJhZTM1NGY0MTU2YTUxZGRhODc5YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAtNDks
MTggKzQ5LDE4IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IoVk0m
IHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgp
KSwganNDYXN0PFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmNhbGVu
ZGFyU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKLXN0YXRpYyBK
U1ZhbHVlIGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCitzdGF0aWMg
SlNWYWx1ZSBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVj
dCkKIHsKICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9y
YWxPYmplY3QqPihvYmplY3QpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0
ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICByZXR1cm4gVGVtcG9yYWxOb3c6
OmNyZWF0ZSh2bSwgVGVtcG9yYWxOb3c6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgY3JlYXRlRHVyYXRp
b25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgSlNWYWx1ZSBj
cmVhdGVOb3dPYmplY3QoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFs
T2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9i
YWxPYmplY3Qodm0pOwotICAgIHJldHVybiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0
PFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0
dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgcmV0dXJuIFRlbXBvcmFsTm93
OjpjcmVhdGUodm0sIFRlbXBvcmFsTm93OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVj
dCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYg
dm0sIEpTT2JqZWN0KiBvYmplY3QpCkBAIC0xNTMsNiArMTUzLDIzIEBAIHN0ZDo6b3B0aW9uYWw8
VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCitTdHJpbmcgdGVtcG9yYWxVbml0VG9TdHJpbmcoVGVtcG9y
YWxVbml0IHVuaXQpCit7CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6OlllYXI6IHJldHVybiAieWVhciJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TW9udGg6
IHJldHVybiAibW9udGgiX3M7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OldlZWs6IHJldHVybiAi
d2VlayJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6RGF5OiByZXR1cm4gImRheSJfczsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJuICJob3VyIl9zOworICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpNaW51dGU6IHJldHVybiAibWludXRlIl9zOworICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpTZWNvbmQ6IHJldHVybiAic2Vjb25kIl9zOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpN
aWxsaXNlY29uZDogcmV0dXJuICJtaWxsaXNlY29uZCJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5p
dDo6TWljcm9zZWNvbmQ6IHJldHVybiAibWljcm9zZWNvbmQiX3M7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6Ok5hbm9zZWNvbmQ6IHJldHVybiAibmFub3NlY29uZCJfczsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIC8vIFRvTGFyZ2VzdFRlbXBvcmFsVW5pdCAoIG5vcm1h
bGl6ZWRPcHRpb25zLCBkaXNhbGxvd2VkVW5pdHMsIGZhbGxiYWNrIFsgLCBhdXRvVmFsdWUgXSAp
CiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b2xh
cmdlc3R0ZW1wb3JhbHVuaXQKIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbExh
cmdlc3RVbml0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25z
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMsIFRl
bXBvcmFsVW5pdCBhdXRvVmFsdWUpCkBAIC0zMDksNiArMzI2LDIyIEBAIFJvdW5kaW5nTW9kZSB0
ZW1wb3JhbFJvdW5kaW5nTW9kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogb3B0aW9uCiAgICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIs
IFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgZmFsbGJhY2spOwog
fQogCit2b2lkIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCB1bnNpZ25lZCBmcmFjdGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBw
cmVjaXNpb24pCit7CisgICAgYXV0byBbcHJlY2lzaW9uVHlwZSwgcHJlY2lzaW9uVmFsdWVdID0g
cHJlY2lzaW9uOworICAgIGlmICgocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gJiYg
ZnJhY3Rpb24pIHx8IChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQgJiYgcHJlY2lz
aW9uVmFsdWUpKSB7CisgICAgICAgIGF1dG8gcGFkZGVkID0gbWFrZVN0cmluZygnLicsIHBhZCgn
MCcsIDksIGZyYWN0aW9uKSk7CisgICAgICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lv
bjo6Rml4ZWQpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCku
bGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvblZhbHVlKSkpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzID0gcGFk
ZGVkLmxlbmd0aCgpOworICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFtsZW5ndGhXaXRob3V0VHJh
aWxpbmdaZXJvZXMgLSAxXSA9PSAnMCcpCisgICAgICAgICAgICAgICAgbGVuZ3RoV2l0aG91dFRy
YWlsaW5nWmVyb2VzLS07CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBh
ZGRlZCkubGVmdChsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMpKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAoIHVu
aXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
bWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4IGQxNTEy
MmE5ZjI4ODJmMmY5YTI2MWNjNDQ5MmU0NzVhNTZhMDlkOGIuLmRiYzQ5NDQwYTAyMDdlZDQzMmQ3
ZTY4NDMyYzdiZTFhNTU1NDlmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaApAQCAtOTQsMTEgKzk0LDEzIEBAIHN0cnVjdCBQcmVjaXNpb25E
YXRhIHsKIH07CiAKIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFVuaXRUeXBl
KFN0cmluZ1ZpZXcpOworU3RyaW5nIHRlbXBvcmFsVW5pdFRvU3RyaW5nKFRlbXBvcmFsVW5pdCk7
CiBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxMYXJnZXN0VW5pdChKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9y
YWxVbml0PiBkaXNhbGxvd2VkVW5pdHMsIFRlbXBvcmFsVW5pdCBhdXRvVmFsdWUpOwogc3RkOjpv
cHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFsU21hbGxlc3RVbml0KEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+
IGRpc2FsbG93ZWRVbml0cyk7CiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0ZW1wb3JhbEZyYWN0
aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucyk7CiBQ
cmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogb3B0aW9ucyk7CiBSb3VuZGluZ01vZGUgdGVtcG9yYWxSb3VuZGluZ01vZGUoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCosIFJvdW5kaW5nTW9kZSk7Cit2b2lkIGZvcm1hdFNlY29uZHNT
dHJpbmdGcmFjdGlvbihTdHJpbmdCdWlsZGVyJiwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDo6dHVw
bGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4pOwogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1S
b3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJ
bmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJU
b0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438304</attachid>
            <date>2021-09-15 16:55:33 -0700</date>
            <delta_ts>2021-09-15 17:12:33 -0700</delta_ts>
            <desc>Various tweaks in preparation for Temporal.Instant</desc>
            <filename>bug-229826-20210915165532.patch</filename>
            <type>text/plain</type>
            <size>9813</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OTViNWY5YzdlZjUxNmFjMmVkMmM0ODI1YjNkZDk5NzQ2ZGQ3YjM4Li4yM2JmZmZhZGRkNjM0YWFm
YzY1NmI5YmQ4Y2NiZTQ3OGIxYmUzNzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMS0wOS0wMyAgUGhpbGlwIENoaW1lbnRvICA8cGNoaW1lbnRvQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgorCisgICAg
ICAgIFZhcmlvdXMgdHdlYWtzIGFuZCBpbXByb3ZlbWVudHMgdG8gZXhpc3RpbmcgVGVtcG9yYWwg
Y29kZSwgdGhhdCB3aWxsIGJlCisgICAgICAgIHVzZWQgZm9yIFRlbXBvcmFsLkluc3RhbnQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1l
L0lTTzg2MDEuaDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10p
OiBBZGQgYW4gb3BlcmF0b3JbXSB0aGF0IGluZGV4ZXMgYnkKKyAgICAgICAgICBUZW1wb3JhbFVu
aXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvcltdIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbER1cmF0aW9uOjp0b0lTTzg2MDFEdXJhdGlvbik6IEltcHJvdmUgZXJyb3IgbWVzc2Fn
ZSB0bworICAgICAgICAgIGluY2x1ZGUgdGhlIGludmFsaWQgc3RyaW5nLgorICAgICAgICAoSlND
OjpUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyk6IFVzZSBmb3JtYXRTZWNvbmRzU3RyaW5nRnJh
Y3Rpb24oKS4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6Y3JlYXRlRHVyYXRpb25Db25zdHJ1Y3Rvcik6IEFscGhhYmV0aXplLgorICAgICAgICAo
SlNDOjpjcmVhdGVOb3dPYmplY3QpOiBBbHBoYWJldGl6ZS4KKyAgICAgICAgKEpTQzo6dGVtcG9y
YWxVbml0VG9TdHJpbmcpOiBBZGQgYSBmdW5jdGlvbiB0byBkdW1wIHRoZSBuYW1lIG9mIGEKKyAg
ICAgICAgICBUZW1wb3JhbFVuaXQsIGUuZy4gZm9yIGVycm9yIG1lc3NhZ2VzLgorICAgICAgICAo
SlNDOjpmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24pOiBNb3ZlIGNvZGUgZnJvbSBUZW1wb3Jh
bER1cmF0aW9uIGludG8KKyAgICAgICAgICBhIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgcmV1c2Vk
IGluIG90aGVyIFRlbXBvcmFsIHR5cGVzLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuaDoKKwogMjAyMS0wOS0xNSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIHNvbWUgcHJvZmlsaW5nIHRvIFVubGlua2VkQ29kZUJsb2NrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKaW5kZXggZGEzNzM0MTEzNmNhMjViMzQ5ZjI0
ZWFlNzZmOTU4MjRiMzJmOTE3MS4uZThmZTI4MjFlZjg2N2IyOTY0OGEyYzQyMGI0MzEwNmFmMzQx
OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaApAQCAtNjEsNiAr
NjEsOCBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0
dXJuIG1fZGF0YVtpXTsgfQogICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAgZG91YmxlJiBvcGVyYXRvcltdKFRlbXBv
cmFsVW5pdCB1KSB7IHJldHVybiBtX2RhdGFbc3RhdGljX2Nhc3Q8dWludDhfdD4odSldOyB9Cisg
ICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKFRlbXBvcmFsVW5pdCB1KSBjb25zdCB7IHJldHVy
biBtX2RhdGFbc3RhdGljX2Nhc3Q8dWludDhfdD4odSldOyB9CiAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQogICAgIGNvbnN0X2l0ZXJh
dG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5lbmQoKTsgfQogICAgIHZvaWQgY2xlYXIo
KSB7IG1fZGF0YS5maWxsKDApOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDU2NWQ3YjAyMjhiYWFhNTMwNDQzY2VmNmQ2
ZTdjZWUzMTliZGRlODcuLjI2ZmIwYTY2ZTZhYjBiYTQwZmNhODhmZWMwMzliNzhmYWYzZDY3ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRp
b24uY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJh
dGlvbjo6dG9JU084NjAxRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIAogICAg
ICAgICBhdXRvIHBhcnNlZER1cmF0aW9uID0gSVNPODYwMTo6cGFyc2VEdXJhdGlvbihzdHJpbmcp
OwogICAgICAgICBpZiAoIXBhcnNlZER1cmF0aW9uKSB7Ci0gICAgICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvdWxkIG5vdCBwYXJzZSBEdXJhdGlvbiBzdHJp
bmciX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoIiciX3MsIHN0cmluZywgIicgaXMgbm90IGEgdmFsaWQgRHVyYXRpb24gc3Ry
aW5nIl9zKSk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTU5OCwx
NyArNTk4LDcgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IElTTzg2
MDE6OkR1cmF0aW9uJiBkdXJhdGlvbiwgc3RkOjp0dXBsZTwKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoZm9ybWF0SW50ZWdlcihiYWxhbmNlZFNlY29uZHMpKTsKIAogICAgICAgICBhdXRvIGZyYWN0
aW9uID0gc3RkOjphYnMoYmFsYW5jZWRNaWxsaXNlY29uZHMpICogMWU2ICsgc3RkOjphYnMoYmFs
YW5jZWRNaWNyb3NlY29uZHMpICogMWUzICsgc3RkOjphYnMoYmFsYW5jZWROYW5vc2Vjb25kcyk7
Ci0gICAgICAgIGlmICgocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gJiYgZnJhY3Rp
b24pIHx8IChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQgJiYgcHJlY2lzaW9uVmFs
dWUpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQoJzAn
LCA5LCBmcmFjdGlvbikpOwotICAgICAgICAgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lz
aW9uOjpGaXhlZCkKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBh
ZGRlZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvblZhbHVlKSkpOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxp
bmdaZXJvZXMgPSBwYWRkZWQubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRl
ZFtsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgLSAxXSA9PSAnMCcpCi0gICAgICAgICAgICAg
ICAgICAgIGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcy0tOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KGxlbmd0aFdpdGhvdXRUcmFpbGlu
Z1plcm9lcykpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGZvcm1hdFNlY29u
ZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsKIAogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnUycpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBhNGU0ZWM2MTViMzE4NjY4NDViMGIx
ZGNkZmNlNWRiNDg0ODliMGQ4Li41OTEwN2Q5ZDc0ZDZmNTg5ZWNmYmFlMzU0ZjQxNTZhNTFkZGE4
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuY3BwCkBAIC00OSwxOCArNDksMTggQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlQ2FsZW5kYXJD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+Y2FsZW5kYXJTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsK
IH0KIAotc3RhdGljIEpTVmFsdWUgY3JlYXRlTm93T2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIG9i
amVjdCkKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBK
U09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9
IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHJldHVy
biBUZW1wb3JhbE5vdzo6Y3JlYXRlKHZtLCBUZW1wb3JhbE5vdzo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpz
Q2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0
cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCi1zdGF0aWMgSlNWYWx1
ZSBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3N0
YXRpYyBKU1ZhbHVlIGNyZWF0ZU5vd09iamVjdChWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2Jq
ZWN0Kj4ob2JqZWN0KTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGVtcG9y
YWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90
eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+
ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKKyAgICByZXR1
cm4gVGVtcG9yYWxOb3c6OmNyZWF0ZSh2bSwgVGVtcG9yYWxOb3c6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNv
bnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKQEAgLTE1Myw2ICsxNTMsMjMgQEAg
c3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFsVW5pdFR5cGUoU3RyaW5nVmlldyB1
bml0KQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKK1N0cmluZyB0ZW1wb3JhbFVuaXRU
b1N0cmluZyhUZW1wb3JhbFVuaXQgdW5pdCkKK3sKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBj
YXNlIFRlbXBvcmFsVW5pdDo6WWVhcjogcmV0dXJuICJ5ZWFyIl9zOworICAgIGNhc2UgVGVtcG9y
YWxVbml0OjpNb250aDogcmV0dXJuICJtb250aCJfczsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6
V2VlazogcmV0dXJuICJ3ZWVrIl9zOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6IHJldHVy
biAiZGF5Il9zOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiByZXR1cm4gImhvdXIiX3M7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogcmV0dXJuICJtaW51dGUiX3M7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogcmV0dXJuICJzZWNvbmQiX3M7CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiByZXR1cm4gIm1pbGxpc2Vjb25kIl9zOworICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDogcmV0dXJuICJtaWNyb3NlY29uZCJfczsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuICJuYW5vc2Vjb25kIl9zOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogLy8gVG9MYXJnZXN0VGVtcG9y
YWxVbml0ICggbm9ybWFsaXplZE9wdGlvbnMsIGRpc2FsbG93ZWRVbml0cywgZmFsbGJhY2sgWyAs
IGF1dG9WYWx1ZSBdICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLXRvbGFyZ2VzdHRlbXBvcmFsdW5pdAogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVu
aXQ+IHRlbXBvcmFsTGFyZ2VzdFVuaXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIG9wdGlvbnMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2Fs
bG93ZWRVbml0cywgVGVtcG9yYWxVbml0IGF1dG9WYWx1ZSkKQEAgLTMwOSw2ICszMjYsMjIgQEAg
Um91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvcHRpb24KICAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVp
dGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9z
LCBmYWxsYmFjayk7CiB9CiAKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1cGxlPFByZWNpc2lv
biwgdW5zaWduZWQ+IHByZWNpc2lvbikKK3sKKyAgICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVj
aXNpb25WYWx1ZV0gPSBwcmVjaXNpb247CisgICAgaWYgKChwcmVjaXNpb25UeXBlID09IFByZWNp
c2lvbjo6QXV0byAmJiBmcmFjdGlvbikgfHwgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpG
aXhlZCAmJiBwcmVjaXNpb25WYWx1ZSkpIHsKKyAgICAgICAgYXV0byBwYWRkZWQgPSBtYWtlU3Ry
aW5nKCcuJywgcGFkKCcwJywgOSwgZnJhY3Rpb24pKTsKKyAgICAgICAgaWYgKHByZWNpc2lvblR5
cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmlu
Z1ZpZXcocGFkZGVkKS5sZWZ0KHBhZGRlZC5sZW5ndGgoKSAtICg5IC0gcHJlY2lzaW9uVmFsdWUp
KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxp
bmdaZXJvZXMgPSBwYWRkZWQubGVuZ3RoKCk7CisgICAgICAgICAgICB3aGlsZSAocGFkZGVkW2xl
bmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcyAtIDFdID09ICcwJykKKyAgICAgICAgICAgICAgICBs
ZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMtLTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcykpOwor
ICAgICAgICB9CisgICAgfQorfQorCiAvLyBNYXhpbXVtVGVtcG9yYWxEdXJhdGlvblJvdW5kaW5n
SW5jcmVtZW50ICggdW5pdCApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1tYXhpbXVtdGVtcG9yYWxkdXJhdGlvbnJvdW5kaW5naW5jcmVtZW50CiBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5p
dCB1bml0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmgKaW5kZXggZDE1MTIyYTlmMjg4MmYyZjlhMjYxY2M0NDkyZTQ3NWE1NmEwOWQ4Yi4uZGJjNDk0
NDBhMDIwN2VkNDMyZDdlNjg0MzJjN2JlMWE1NTU0OWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC05NCwxMSArOTQsMTMgQEAgc3Ry
dWN0IFByZWNpc2lvbkRhdGEgewogfTsKIAogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRl
bXBvcmFsVW5pdFR5cGUoU3RyaW5nVmlldyk7CitTdHJpbmcgdGVtcG9yYWxVbml0VG9TdHJpbmco
VGVtcG9yYWxVbml0KTsKIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbExhcmdl
c3RVbml0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cywgVGVtcG9yYWxVbml0IGF1dG9W
YWx1ZSk7CiBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxTbWFsbGVzdFVuaXQo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjppbml0aWFsaXplcl9saXN0
PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRzKTsKIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHRlbXBvcmFsRnJhY3Rpb25hbFNlY29uZERpZ2l0cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiBvcHRpb25zKTsKIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFJvdW5kaW5nTW9kZSB0ZW1wb3JhbFJvdW5k
aW5nTW9kZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUm91bmRpbmdNb2RlKTsKK3ZvaWQg
Zm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBmcmFj
dGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPik7CiBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5pdCk7CiBkb3VibGUgdGVt
cG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25z
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJvb2wgaW5jbHVzaXZlKTsKIGRvdWJs
ZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGluY3JlbWVudCwgUm91bmRp
bmdNb2RlKTsK
</data>
<flag name="commit-queue"
          id="461642"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439114</attachid>
            <date>2021-09-23 18:34:21 -0700</date>
            <delta_ts>2021-09-27 11:29:38 -0700</delta_ts>
            <desc>Patch for preliminary review</desc>
            <filename>bug-229826-20210923183420.patch</filename>
            <type>text/plain</type>
            <size>122949</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzZjYjg0MTUyNWVjZGU0YTQ5NmRmZGFjM2RkY2NlMzliNjNiODEwLi5lMWZhZWZlOTI2OWU1MGFk
ZGY3MTBjOWVkY2RlM2ViZTczODRjNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50
b0BnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNpbmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3Ry
aW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhl
ciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpm
cm9tSVNPUGFydHNBbmRPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6
OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6cm91bmQpOgor
ICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmRpZmZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0lTTzg2MDEuaDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yW10pOiBBZGQgYW4gb3ZlcmxvYWQgZm9yIER1cmF0aW9uW10KKyAgICAgICAgICB0aGF0IGlu
ZGV4ZXMgYnkgVGVtcG9yYWxVbml0IGVudW0gaW5zdGVhZCBvZiBpbnRlZ2VyIGluZGV4LgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6RXhhY3RUaW1lKTogQWRkIGFuIEV4YWN0VGltZSB0
eXBlIHRoYXQgd3JhcHMKKyAgICAgICAgICBhbiBJbnQxMjggYW5kIGNhbiBkbyB0aGUgYmFzaWMg
b3BlcmF0aW9ucy4gVGhpcyB0eXBlIGNhbiBiZSByZXVzZWQgaW4KKyAgICAgICAgICBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lLgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9j
aE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVw
b2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aFNlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmVwb2No
TWlsbGlzZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpl
cG9jaE1pY3Jvc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGlt
ZTo6ZXBvY2hOYW5vc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6bmFub3NlY29uZHNGcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OkV4YWN0VGltZTo6cHJpbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0
b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+PSBjb25z
dCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+IGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKTogQWRkIGEgbWluaW1hbAorICAgICAg
ICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYW5kbGVEYXRlVGltZVZhbHVlIGFic3RyYWN0IG9w
IGZyb20gdGhlCisgICAgICAgICAgVGVtcG9yYWwgc3BlY2lmaWNhdGlvbiwgb25seSBjb3Zlcmlu
ZyBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOiBVc2UgaXQgaW4gdGhlIGV4aXN0aW5nCisgICAgICAgICAgSW50bC5EYXRlVGltZUZvcm1h
dCBtZXRob2RzLgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6IEFkZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGFuIElu
dDEyOC4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6IFJlbW92ZSBkZWNsYXJhdGlvbiBm
b3Igbm9uZXhpc3RlbnQgdG9VaW50NjRIZWFwKCkuCisgICAgICAgICogcnVudGltZS9KU0RhdGVN
YXRoLmNwcDogTW92ZSB0aW1lVG9NUygpIGludG8gV1RGLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5zdGFudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbUR1cmF0aW9uTGlrZSk6
IEFjY2VzcyBEdXJhdGlvbiBwcm9wZXJ0aWVzIGluCisgICAgICAgICAgdGhlIG9yZGVyIGRlZmlu
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246
OnRvTGltaXRlZER1cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OndpdGggY29uc3QpOiBBY2Nlc3MgRHVyYXRpb24gcHJvcGVydGllcyBpbiB0aGUKKyAgICAg
ICAgICBvcmRlciBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OnRvSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25kcyk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMpOgorICAgICAgICAoSlND
OjpUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAg
ICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnN0YW50
Q29uc3RydWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Zm9ybWF0U2Vjb25kc1N0cmluZ1Bh
cnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YWJzKTogQWRkZWQgZm9yIGNsYXJpdHkuCisgICAg
ICAgIChKU0M6OnJvdW5kTnVtYmVyVG9JbmNyZW1lbnQpOiBBZGQgb3ZlcmxvYWQgZm9yIEludDEy
OC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6IEFkZCBhcnJheSBjb3JyZXNw
b25kaW5nIHRvIHRoZSB0YWJsZSBpbiB0aGUKKyAgICAgICAgICBzcGVjIHRleHQgc3BlY2lmeWlu
ZyBhbHBoYWJldGljYWwgYWNjZXNzIG9yZGVyIGZvciB1bml0IHByb3BlcnRpZXMuCisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTIz
ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBWYXJp
b3VzIHR3ZWFrcyBpbiBwcmVwYXJhdGlvbiBmb3IgVGVtcG9yYWwuSW5zdGFudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3Yzdj
NGU5Nzc5YTg5YjIzNDdkMjY0YWFkNjU3YzZjOGY2Y2ZhYjI3Li43OWFmMDdkZGY0YzUyYWY1ZTM4
NGFkODllNjQyMGM5Y2ZkYzlkOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA5LTIzICBQ
aGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9AZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAoV1RGOjp0
aW1lVG9NUyk6IE1vdmVkIGZyb20gSlNEYXRlTWF0aC5oLgorICAgICAgICAqIHd0Zi9JbnQxMjgu
aDoKKyAgICAgICAgKFdURjo6SW50MTI4SW1wbDo6SW50MTI4SW1wbCk6IEFkZCBhIGNvbnZlcnNp
b24gZnJvbSBJbnQxMjggdG8gVUludDEyOAorICAgICAgICAgIGFuZCB2aWNlIHZlcnNhLgorCiAy
MDIxLTA5LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgbW9yZSBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIHRvIFdlYkNvcmU6Omxpbmtl
ZE9uT3JBZnRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmZkMjBk
N2RlZjkyYjY0ZDE5NGE3NTRhZWQxZjFhY2JiOGJlOWE4Yy4uMDg5ZjY0Y2Y3ZDFjMWZmNDg3N2Uw
NzExNzAzYzMwMGY4NTU2ZDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTExLDYgKzExMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWNiY2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODky
YTZmMDhjNWRhNDBkNi4uMDE1ZTZhNDlkMGU4MzU5MTNiNDFiZDJlNTNjZmM1Y2ZlYTJiMWEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5NSw2ICsx
OTUsOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmx1dC5oIFwKICAg
ICBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIFwK
ICAgICBUZW1wb3JhbE5vdy5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAogICAg
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZTg2YmE4ZGMwYmI5Y2FiZjRiMTM0Y2IxMzI0ZDI0MTZmY2NmOWE3Li41
ODVjNzYyMzgyZTFmYjdmNTZmMDZlMTFiNTc5OGEzYmM4Nzk0NjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTk1Nyw2ICsxOTU3LDExIEBACiAJCUUzRkY3NTMzMUQ5Q0VBMTgw
MEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRH
ZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTEx
MkVGMjcyMjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUY2RDY3RDQwMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNB
MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAqLzsgfTsKKwkJRjZENjdENDIy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzQzI2RjkwMkU3MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRjZENjdENDQy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0UyNkY5MDJFODAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oICovOyB9OworCQlGNkQ2N0Q0NzI2Rjkx
MzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0Q0NTI2RjkxMzBBMDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUY2RDY3
RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0Q0NjI2Rjkx
MzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlG
NkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYxNTAyMDI2OTNENDUwMDA0
Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggKi87IH07CiAJCUZFMDQxNTUzMjUyRUMwNzMw
MDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNDE1NTIyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNp
dG9yTWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTky
RDZBMTExRkJENDkxRDAwMDI0NUY0IC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3BwICov
OyB9OwpAQCAtNTMyNSw2ICs1MzMwLDE0IEBACiAJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAv
KiBSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB9OwogCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg3MDI1NTU5N0Qw
MUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0pTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVtcG9yYWxJbnN0YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdE
M0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjZENjdEM0IyNkY5MDJFNjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZE
NjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0UyNkY5MDJFODAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdE
NDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdENDYyNkY5MTMwQjAw
NkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9y
YWxOb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxOb3cuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVGIC8q
IFRlbXBvcmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUw
MUEyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MDU2LDYgKzcwNjksOCBAQAogCQkJCTk5NkI3MzE0MUJEOUZBMkMwMDMzMUI4NCAv
KiBTeW1ib2xQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2
IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNjI2
REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLywKKwkJ
CQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
bHV0LmggKi8sCisJCQkJRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlGNkYxNTAyMDI2OTNENDUwMDA0Qjk4RUYgLyogVGVt
cG9yYWxPYmplY3QubHV0LmggKi8sCiAJCQkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdh
c21PcHMuaCAqLywKIAkJCQlBRDJGQ0MwQTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTgwMTQsNiArODAyOSwxMiBAQAog
CQkJCUEzQzdFREI0MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3IuaCAqLywKIAkJCQlBM0M3RURCNTI2QjBEQjM3MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTNDN0VEQjAyNkIwREIzNjAwNEMzNEM1IC8qIFRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCAqLywKKwkJCQlGNkQ2N0QzOTI2RjkwMkU1MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLywKKwkJCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmggKi8sCisJCQkJRjZENjdEM0IyNkY5MDJFNjAwNkUwMzQ5IC8q
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlGNkQ2N0QzQzI2RjkwMkU3
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLywKKwkJCQlGNkQ2N0Qz
RDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
Ki8sCiAJCQkJRjZGMTUwMUIyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmNwcCAqLywK
IAkJCQlGNkYxNTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuaCAqLywKIAkJCQlG
NkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuY3BwICovLApAQCAtOTYy
Niw3ICs5NjQ3LDYgQEAKIAkJCQk1REU2RTVCMzBFMTcyOEVDMDAxODA0MDcgLyogY3JlYXRlX2hh
c2hfdGFibGUgaW4gSGVhZGVycyAqLywKIAkJCQk1MzVDMjQ2MTFGNzg5MjhFMDA2RUM0MEUgLyog
Y3JlYXRlX3JlZ2V4X3RhYmxlcyBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlFOTJCMUJEMTdGQTQw
MDFBQTQxMyAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLywKLQkJCQlFMzg2RkQ3QjI2RTg2N0I4
MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkRGMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmll
dy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzMyLDcgKzk3NTIsNiBAQAogCQkJCUE3RDg5Q0Y4MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
REQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dl
bmVyYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJB
RDcgLyogREZHR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZBMThBNjAwNzAwMDFB
MjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3NSw3ICsx
MDI5NCw2IEBACiAJCQkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYzMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTM4NkZEN0YyNkU4
NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQz
MyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDczNiw3ICsxMDc1
NCwxNSBAQAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBE
QjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1
MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4
NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4NkZEN0YyNkU4NjdCODAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzBFOEE1
NjI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDg0NmU5ZWU3NWZlZDA1NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcuLjk4
NzdlYTE5ZmZkNzYwNzE1NTYxYTFjNjI5ZGE1ODFkYzEzMTRiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTEwMTcsNiArMTAxNyw5IEBAIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwCitydW50aW1lL1RlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuY3BwCmluZGV4IGU3MmJmNzI3N2IyMmYzNzY1Mjk2NGVmNDQzNjYxMGU5NjM0
MzFkOWMuLjJhMmEzZmNjNWE1ZWE1NzMyYjZmYjFhMGVkMjY0MmYyYWJlYTJkNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC04NzcsNiArODc3LDM3IEBA
IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5U
aW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lCiAgICAgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8RXhh
Y3RUaW1lPiBwYXJzZUluc3RhbnQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRlbXBvcmFsSW5zdGFudFN0cmluZwor
ICAgIC8vIFRlbXBvcmFsSW5zdGFudFN0cmluZyA6CisgICAgLy8gICAgIERhdGUgVGltZVpvbmVP
ZmZzZXRSZXF1aXJlZAorICAgIC8vICAgICBEYXRlIERhdGVUaW1lU2VwYXJhdG9yIFRpbWVTcGVj
IFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZU9mZnNldFJlcXVpcmVkCisgICAgLy8gVGltZVpvbmVP
ZmZzZXRSZXF1aXJlZCA6CisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0IFRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbl9vcHQKKworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNp
bmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHsK
KyAgICAgICAgYXV0byBkYXRldGltZSA9IHBhcnNlRGF0ZVRpbWUoYnVmZmVyKTsKKyAgICAgICAg
aWYgKCFkYXRldGltZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGF1dG8gW2RhdGUsIG1heWJlVGltZSwgbWF5YmVUaW1lWm9uZV0gPSBkYXRldGltZS52YWx1ZSgp
OworICAgICAgICBpZiAoIW1heWJlVGltZVpvbmUgfHwgKCFtYXliZVRpbWVab25lLT5tX3ogJiYg
IW1heWJlVGltZVpvbmUtPm1fb2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIC8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhciBhbm5vdGF0aW9uCisgICAgICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgICAgIFBsYWluVGltZSB0aW1lOworICAgICAgICBpZiAobWF5YmVUaW1lKQorICAgICAg
ICAgICAgdGltZSA9IG1heWJlVGltZS52YWx1ZSgpOworCisgICAgICAgIGludDY0X3Qgb2Zmc2V0
ID0gbWF5YmVUaW1lWm9uZS0+bV96ID8gMCA6ICptYXliZVRpbWVab25lLT5tX29mZnNldDsKKyAg
ICAgICAgcmV0dXJuIHtFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIo
KSwgZGF0ZS5tb250aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwg
dGltZS5zZWNvbmQoKSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRp
bWUubmFub3NlY29uZCgpLCBvZmZzZXQpfTsKKyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0dGltZXpvbmVvZmZzZXRz
dHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkK
IHsKQEAgLTk2OSw1ICsxMDAwLDkwIEBAIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0
aW9uJiBkdXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorRXhhY3RUaW1lIEV4YWN0VGlt
ZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24sIHVpbnQ4X3Qg
ZCwgdW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25lZCBtcywgdW5z
aWduZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpCit7CisgICAgQVNTRVJU
KHkgPj0gLTk5OTk5OSAmJiB5IDw9IDk5OTk5OSk7CisgICAgQVNTRVJUKG1vbiA+PSAxICYmIG1v
biA8PSAxMik7CisgICAgQVNTRVJUKGQgPj0gMSAmJiBkIDw9IDMxKTsKKyAgICBBU1NFUlQoaCA+
PSAwICYmIGggPD0gMjMpOworICAgIEFTU0VSVChtaW4gPj0gMCAmJiBtaW4gPD0gNTkpOworICAg
IEFTU0VSVChzID49IDAgJiYgcyA8PSA1OSk7CisgICAgQVNTRVJUKG1zID49IDAgJiYgbXMgPD0g
OTk5KTsKKyAgICBBU1NFUlQobWljcm9zID49IDAgJiYgbWljcm9zIDw9IDk5OSk7CisgICAgQVNT
RVJUKG5zID49IDAgJiYgbnMgPD0gOTk5KTsKKworICAgIGRvdWJsZSBkYXRlRGF5cyA9IGRhdGVU
b0RheXNGcm9tMTk3MCh5LCBtb24gLSAxLCBkKTsKKyAgICBkb3VibGUgdGltZU1zID0gdGltZVRv
TVMoaCwgbWluLCBzLCBtcyk7CisgICAgZG91YmxlIHV0Y01zID0gKGRhdGVEYXlzICogbXNQZXJE
YXkgKyB0aW1lTXMpOworICAgIEludDEyOCB1dGNOcyA9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50
NjRfdD4odXRjTXMpfSAqIDEnMDAwJzAwMCArIG1pY3JvcyAqIDEwMDAgKyBuczsKKyAgICByZXR1
cm4gRXhhY3RUaW1lIHt1dGNOcyAtIG9mZnNldH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RU
aW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOwor
ICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlz
KCkpOworCisgICAgSW50MTI4IHJlc3VsdE5zIHttX2Vwb2NoTmFub3NlY29uZHN9OworCisgICAg
Ly8gVGhlIGR1cmF0aW9uJ3MgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBtaWxsaXNlY29u
ZHMgc2hvdWxkIGJlCisgICAgLy8gYWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1iaXQgaW50LiAy
KjFlOCAyNC1ob3VyIGRheXMgaXMgdGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNwYW4gZm9yIGV4
YWN0IHRpbWUsIHNvIGlmIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlvbiBleGNlZWRz
CisgICAgLy8gdGhhdCwgdGhlbiB3ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBpZiAoZmFicyhkdXJh
dGlvbi5ob3VycygpKSA+IDQ4MDAwMDAwMDApCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5o
b3VycygpKX0gKiBOU19QRVJfSE9VUjsKKyAgICBpZiAoZmFicyhkdXJhdGlvbi5taW51dGVzKCkp
ID4gMjg4MDAwMDAwMDAwKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJlc3Vs
dE5zICs9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubWludXRlcygpKX0g
KiBOU19QRVJfTUlOVVRFOworICAgIGlmIChmYWJzKGR1cmF0aW9uLnNlY29uZHMoKSkgPiAxLjcy
OGUrMTMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0TnMgKz0gSW50
MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5zZWNvbmRzKCkpfSAqIE5TX1BFUl9T
OworICAgIGlmIChmYWJzKGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpKSA+IDEuNzI4ZSsxNikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHROcyArPSBJbnQxMjgge3N0YXRp
Y19jYXN0PGludDY0X3Q+KGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpKX0gKiBOU19QRVJfTVM7Cisg
ICAgLy8gRklYTUU6IHByZWNpc2lvbi4gY2hlY2sgaWYgdGhlcmUgaXMgc3VjaCBhIHRoaW5nIGFz
IGNoZWNrZWQgaW50ZWdlcgorICAgIC8vIGFyaXRobWV0aWMgaW4gV1RGCisgICAgcmVzdWx0TnMg
Kz0gSW50MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5taWNyb3NlY29uZHMoKSl9
ICogTlNfUEVSX01JQ1JPUzsKKyAgICByZXN1bHROcyArPSBJbnQxMjgge3N0YXRpY19jYXN0PGlu
dDY0X3Q+KGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkpfTsKKworICAgIEV4YWN0VGltZSByZXN1bHQg
e3Jlc3VsdE5zfTsKKyAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHtyZXN1bHR9OworfQorCitJbnQxMjggRXhhY3RUaW1l
Ojpyb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50MTI4IGluY3JlbWVu
dE5zIHtpbmNyZW1lbnR9OworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpIb3VyOiBpbmNyZW1lbnROcyAqPSBOU19QRVJfSE9VUjsgYnJlYWs7CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogaW5jcmVtZW50TnMgKj0gTlNfUEVSX01JTlVURTsgYnJlYWs7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogaW5jcmVtZW50TnMgKj0gTlNfUEVSX1M7
IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogaW5jcmVtZW50TnMg
Kj0gTlNfUEVSX01TOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6
IGluY3JlbWVudE5zICo9IE5TX1BFUl9NSUNST1M7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpOYW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVh
bnRpdHksIGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOworfQorCisvLyBEaWZmZXJlbmNlSW5z
dGFudCAoIG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGlu
Z01vZGUgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwtZGlmZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRpbWU6OmRpZmZlcmVuY2UoRXhhY3RU
aW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGlu
Z01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIEludDEyOCBkaWZmID0gb3RoZXIubV9l
cG9jaE5hbm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIHJldHVybiByb3VuZChk
aWZmLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKK0V4YWN0VGltZSBFeGFj
dFRpbWU6OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5k
aW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7cm91
bmQobV9lcG9jaE5hbm9zZWNvbmRzLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSl9Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBkYTM3MzQxMTM2Y2EyNWIzNDlmMjRl
YWU3NmY5NTgyNGIzMmY5MTcxLi5iMjhkOGRlZDA4ODRhZDk0NjMzM2RhMTk4OTVjNzQ0ZWM0ZGVk
NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNw
YWNlIElTTzg2MDEgewpAQCAtNjEsNiArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUmIG9w
ZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIG1fZGF0YVtpXTsgfQogICAgIGNvbnN0IGRvdWJs
ZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAg
ZG91YmxlJiBvcGVyYXRvcltdKFRlbXBvcmFsVW5pdCB1KSB7IHJldHVybiBtX2RhdGFbc3RhdGlj
X2Nhc3Q8dWludDhfdD4odSldOyB9CisgICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKFRlbXBv
cmFsVW5pdCB1KSBjb25zdCB7IHJldHVybiBtX2RhdGFbc3RhdGljX2Nhc3Q8dWludDhfdD4odSld
OyB9CiAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVn
aW4oKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5l
bmQoKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5maWxsKDApOyB9CkBAIC03Nyw2ICs4
MCwxMjIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzPiBtX2RhdGEgeyB9OwogfTsKIAorY2xhc3MgRXhhY3RUaW1lIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChFeGFjdFRpbWUpOworcHVibGljOgorICAgIGNvbnN0ZXhwciBFeGFj
dFRpbWUoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGV4cGxpY2l0IEV4YWN0VGltZShJbnQx
MjggZXBvY2hOYW5vc2Vjb25kcykgOiBtX2Vwb2NoTmFub3NlY29uZHMoZXBvY2hOYW5vc2Vjb25k
cykgeyB9CisgICAgY29uc3RleHByIEV4YWN0VGltZShjb25zdCBFeGFjdFRpbWUmIG90aGVyKSA6
IG1fZXBvY2hOYW5vc2Vjb25kcyhvdGhlci5tX2Vwb2NoTmFub3NlY29uZHMpIHsgfQorCisgICAg
c3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoU2Vjb25kcyhpbnQ2NF90IGVwb2No
U2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHtlcG9jaFNl
Y29uZHN9ICogTlNfUEVSX1MpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGlt
ZSBmcm9tRXBvY2hNaWxsaXNlY29uZHMoaW50NjRfdCBlcG9jaE1pbGxpc2Vjb25kcykKKyAgICB7
CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHtlcG9jaE1pbGxpc2Vjb25kc30gKiBO
U19QRVJfTVMpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBv
Y2hNaWNyb3NlY29uZHMoaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcykKKyAgICB7CisgICAgICAg
IHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHtlcG9jaE1pY3Jvc2Vjb25kc30gKiBOU19QRVJfTUlD
Uk9TKTsKKyAgICB9CisgICAgc3RhdGljIEV4YWN0VGltZSBmcm9tSVNPUGFydHNBbmRPZmZzZXQo
aW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBt
aW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5z
LCBpbnQ2NF90IG9mZnNldCk7CisKKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaFNlY29uZHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBOU19QRVJfUyk7Cisg
ICAgfQorICAgIGNvbnN0ZXhwciBpbnQ2NF90IGVwb2NoTWlsbGlzZWNvbmRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50NjRfdD4obV9lcG9jaE5hbm9zZWNvbmRzIC8gTlNfUEVSX01TKTsKKyAgICB9CisgICAg
Y29uc3RleHByIGludDY0X3QgZXBvY2hNaWNyb3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90
PihtX2Vwb2NoTmFub3NlY29uZHMgLyBOU19QRVJfTUlDUk9TKTsKKyAgICB9CisgICAgY29uc3Rl
eHByIEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0K
KworICAgIGNvbnN0ZXhwciBpbnQgbmFub3NlY29uZHNGcmFjdGlvbigpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Vwb2NoTmFub3NlY29uZHMgJSBOU19Q
RVJfUyk7CisgICAgfQorCisgICAgU3RyaW5nIHByaW50KCkgY29uc3QKKyAgICB7CisgICAgICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25kcyA8
IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBwcmlu
dEltcGwoYnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcHJpbnRJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxpZEVwb2No
TmFub3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcwor
ICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBNSU5fVkFMVUUgJiYgbV9lcG9jaE5hbm9zZWNvbmRzIDw9
IE1BWF9WQUxVRTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoRXhhY3RU
aW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25k
cyA8IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I8PShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9lcG9jaE5hbm9zZWNvbmRzIDw9IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9Cisg
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID09IG90aGVyLm1fZXBvY2hOYW5v
c2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShFeGFjdFRpbWUg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzICE9
IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I+PShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9l
cG9jaE5hbm9zZWNvbmRzID49IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPiBvdGhlci5tX2Vwb2NoTmFub3NlY29u
ZHM7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IGFkZChEdXJhdGlvbikg
Y29uc3Q7CisgICAgSW50MTI4IGRpZmZlcmVuY2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBp
bmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKyAgICBFeGFjdFRp
bWUgcm91bmQodW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggREFZX1JBTkdF
X1Mgezg2NDAwJzAwMDAwMDAwfTsgLy8gMWU4IGRheXMKKyAgICBzdGF0aWMgY29uc3RleHByIElu
dDEyOCBOU19QRVJfTUlDUk9TIHsxMDAwfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBO
U19QRVJfTVMgezEnMDAwJzAwMH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggTlNfUEVS
X1MgezEnMDAwJzAwMCcwMDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IE5TX1BFUl9N
SU5VVEUgPSBOU19QRVJfUyAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IE5TX1BF
Ul9IT1VSID0gTlNfUEVSX01JTlVURSAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4
IE1JTl9WQUxVRSA9IC1EQVlfUkFOR0VfUyAqIE5TX1BFUl9TOworICAgIHN0YXRpYyBjb25zdGV4
cHIgSW50MTI4IE1BWF9WQUxVRSA9IERBWV9SQU5HRV9TICogTlNfUEVSX1M7CisKKyAgICBzdGF0
aWMgdm9pZCBwcmludEltcGwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4IHZhbHVlKQor
ICAgIHsKKyAgICAgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgICAgIHByaW50SW1wbChidWls
ZGVyLCB2YWx1ZSAvIDEwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHZhbHVlICUgMTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50MTI4IHJv
dW5kKEludDEyOCBxdWFudGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJv
dW5kaW5nTW9kZSk7CisKKyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRzIHsgfTsKK307CisK
IGNsYXNzIFBsYWluVGltZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1l
KTsKIHB1YmxpYzoKQEAgLTE2Niw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJp
bmcoUGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbgog
CiBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitzdGQ6Om9wdGlvbmFs
PEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBJ
U084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggNDYwNDNiYmYwMjI5OGRjNTYxYTgz
NjJkYTNmMzRlYzM5ZDEwMTMzOC4uYzM5YmM2OWViOWJiYzgwNWRkZmQ4YjI2OTQ2OGQ0ZjQxZGJi
M2E3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmgKQEAgLTk1LDYgKzk1LDggQEAgcHJpdmF0ZToKIAogICAgIFVEYXRlSW50ZXJ2
YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2Jq
ZWN0Kik7CiAKKyAgICBzdGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6IHVpbnQ4X3QgeyBO
b25lLCBOYXJyb3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBFcmEgOiB1aW50OF90
IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgWWVhciA6IHVp
bnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKaW5kZXggNzU4NGNmMGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcxY2YzYi4uNzhjODVi
ZWM3YjBhYTUzNWY1NDFlM2JmNTRiOTkyN2I3OWFlY2ZlNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsTwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwog
fQogCisvLyBIYW5kbGVEYXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQsIHggKQorLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaGFuZGxlZGF0ZXRp
bWV2YWx1ZQorZG91YmxlIEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7CisgICAgaWYgKHguaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIGRhdGVOb3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIC8vIEZJ
WE1FOgorICAgIC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRlbXBvcmFsIHR5cGVzCisgICAg
Ly8gIC0gV29yayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8vICAtIFJldHVybiBVRGF0ZUZv
cm1hdCBhbmQgVURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUKKyAgICBU
ZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+
KHZtLCB4KTsKKyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIGluc3RhbnQtPmV4YWN0
VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBXVEY6OnRpbWVD
bGlwKHgudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTEwMCwxNCArMTIyLDggQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFs
T2JqZWN0KgogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0ganNDYXN0PEludGxEYXRl
VGltZUZvcm1hdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBkYXRl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICBpZiAo
ZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVD
bGlwKGRhdGUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAgICBkb3VibGUgdmFsdWUg
PSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBk
YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoZ2xvYmFs
T2JqZWN0LCB2YWx1ZSkpKTsKIH0KQEAgLTE1NiwxNCArMTcyLDggQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAo
SlNHbG9iYWwKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9ybWF0Il9zKSk7
CiAKICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJs
ZSB2YWx1ZTsKLQotICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0g
ZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAg
ICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
fQorICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVW
YWx1ZShnbG9iYWxPYmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShk
YXRlVGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpA
QCAtMTg1LDkgKzE5NSw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UsIChKU0dsb2JhbE9iCiAgICAgaWYgKHN0YXJ0
RGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kRGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFy
dERhdGUgb3IgZW5kRGF0ZSBpcyB1bmRlZmluZWQiX3MpOwogCi0gICAgZG91YmxlIHN0YXJ0RGF0
ZSA9IHN0YXJ0RGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIHN0
YXJ0RGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxP
YmplY3QsIHN0YXJ0RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwotICAgIGRvdWJsZSBlbmREYXRlID0gZW5kRGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CisgICAgZG91YmxlIGVuZERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURh
dGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBlbmREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKHN0YXJ0RGF0ZSA+IGVuZERhdGUpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnRE
YXRlIGlzIGxhcmdlciB0aGFuIGVuZERhdGUiX3MpOwpAQCAtMjEyLDkgKzIyMiw5IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0
UmFuZ2VUb1BhcnRzLCAoSlNHCiAgICAgaWYgKHN0YXJ0RGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkg
fHwgZW5kRGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgb3IgZW5kRGF0ZSBpcyB1bmRl
ZmluZWQiX3MpOwogCi0gICAgZG91YmxlIHN0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZVZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IEludGxEYXRlVGltZUZv
cm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0ZVZhbHVlKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGRvdWJsZSBlbmREYXRl
ID0gZW5kRGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIGVuZERh
dGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0
LCBlbmREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgaWYgKHN0YXJ0RGF0ZSA+IGVuZERhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0aGFuIGVuZERh
dGUiX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4
IDE3NGIwZjhhZTdmZWRiYjMyNDNmNDRhZWRlNTQzMGNiZjJmMjQxYjIuLmM2NTc2ODJmZDEzMzE1
YWFlODk1Y2RjNzFlYjU5M2M1NmFiODk4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4K
KyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0yMzEsNiArMjMyLDYyIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6
Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVlKQog
ICAgIHJldHVybiBjcmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHVuc2lnbmVkVmFsdWUsIHNp
Z24pOwogfQogCitKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSW50MTI4IHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoIXZhbHVlKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZVpl
cm8oZ2xvYmFsT2JqZWN0KSk7CisKKyAgICBVSW50MTI4IHVuc2lnbmVkVmFsdWU7CisgICAgYm9v
bCBzaWduID0gZmFsc2U7CisgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICB1bnNpZ25lZFZh
bHVlID0gc3RhdGljX2Nhc3Q8VUludDEyOD4oLSh2YWx1ZSArIDEpKSArIDE7CisgICAgICAgIHNp
Z24gPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICB1bnNpZ25lZFZhbHVlID0gdmFsdWU7CisK
KyAgICBpZiAoKHVuc2lnbmVkVmFsdWUgJiAweGZmZmYnZmZmZidmZmZmJ2ZmZmYpID09IHVuc2ln
bmVkVmFsdWUpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJvbUlt
cGwoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSksIHNp
Z24pKTsKKworICAgIGlmIChzaXplb2YoRGlnaXQpID09IDgpIHsKKyAgICAgICAgSlNCaWdJbnQq
IGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgoZ2xvYmFsT2JqZWN0LCAyKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAgICAgRGlnaXQgbG93Qml0
cyA9IHN0YXRpY19jYXN0PERpZ2l0Pih1bnNpZ25lZFZhbHVlICYgMHhmZmZmJ2ZmZmYnZmZmZidm
ZmZmKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oKHVuc2ln
bmVkVmFsdWUgPj4gNjQpICYgMHhmZmZmJ2ZmZmYnZmZmZidmZmZmKTsKKworICAgICAgICBBU1NF
UlQoaGlnaEJpdHMpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93Qml0cyk7Cisg
ICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBiaWdJbnQtPnNl
dFNpZ24oc2lnbik7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgQVNTRVJU
KHNpemVvZihEaWdpdCkgPT0gNCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0aWNfY2FzdDxE
aWdpdD4odW5zaWduZWRWYWx1ZSAmIDB4ZmZmZidmZmZmKTsKKyAgICBEaWdpdCBkaWdpdDEgPSBz
dGF0aWNfY2FzdDxEaWdpdD4oKHVuc2lnbmVkVmFsdWUgPj4gMzIpICYgMHhmZmZmJ2ZmZmYpOwor
ICAgIERpZ2l0IGRpZ2l0MiA9IHN0YXRpY19jYXN0PERpZ2l0PigodW5zaWduZWRWYWx1ZSA+PiA2
NCkgJiAweGZmZmYnZmZmZik7CisgICAgRGlnaXQgZGlnaXQzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+
KCh1bnNpZ25lZFZhbHVlID4+IDk2KSAmIDB4ZmZmZidmZmZmKTsKKworICAgIEFTU0VSVChkaWdp
dDIgfHwgZGlnaXQzKTsKKworICAgIGludCBsZW5ndGggPSBkaWdpdDMgPyA0IDogMzsKKyAgICBK
U0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChnbG9iYWxPYmplY3QsIGxlbmd0aCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBiaWdJbnQt
PnNldERpZ2l0KDAsIGRpZ2l0MCk7CisgICAgYmlnSW50LT5zZXREaWdpdCgxLCBkaWdpdDEpOwor
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMiwgZGlnaXQyKTsKKyAgICBpZiAoZGlnaXQzKQorICAgICAg
ICBiaWdJbnQtPnNldERpZ2l0KDMsIGRpZ2l0Myk7CisgICAgYmlnSW50LT5zZXRTaWduKHNpZ24p
OworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJv
bShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHZhbHVlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oCmluZGV4IDg5NjFjMWQ4ZmI2MTAxYWI2OGQ5NzBmMDJiNzFlZGNiMzM0ZGZkNzguLjg4
ZjNjMzkwMzk5MTIyZTIzN2FlMmExODYxMTYzM2I2ZGE2Nzk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgPHd0Zi9DYWdlZFVu
aXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QgdmFs
dWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShK
U0dsb2JhbE9iamVjdCosIGludDY0X3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IHZhbHVl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNH
bG9iYWxPYmplY3QqLCBJbnQxMjggdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRl
RnJvbShKU0dsb2JhbE9iamVjdCosIGJvb2wgdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSk7CiAKQEAgLTYwNSw4ICs2
MDcsNiBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90
IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvVWludDY0SGVhcChKU0JpZ0ludCopOwotCiAg
ICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQsIG1fZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGRhZTliM2E5YmM5MmZiYWZkNGUz
MDE5NGI0ZDFhOGQ4M2RiZDJjZmYuLjUyMTlmOGY3MjQyYjg2Zjk0MGU4MjgyMzU4NGU2MWZlMmJh
NDllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1h
dGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3Bw
CkBAIC0yNjksMTEgKzI2OSw2IEBAIExvY2FsVGltZU9mZnNldCBEYXRlQ2FjaGU6OmxvY2FsVGlt
ZU9mZnNldChkb3VibGUgbWlsbGlzZWNvbmRzRnJvbUVwb2NoLCBXVEY6OlRpCiAgICAgcmV0dXJu
IG9mZnNldDsKIH0KIAotc3RhdGljIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIs
IGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKLXsKLSAgICByZXR1cm4gKCgoaG91
ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsg
c2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Ci19Ci0KIGRvdWJsZSBEYXRlQ2FjaGU6Omdy
ZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgZG91YmxlIG1p
bGxpc2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogewogICAgIGRvdWJsZSBk
YXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFyKCksIHQubW9udGgoKSwgdC5tb250aERheSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCAwNmY2NTNlY2JmODRiMzc4YTdiM2NhZWFkMjQzNDY5ODg5NTI3ZjIwLi5iNTU1NTk1
NTg3NTM0NzYxZGMyYTM3YTg3YTI1YzQxYjYyNTA5ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMDUsNiArMjA1LDggQEAK
ICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFs
UGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKQEAg
LTEyMzQsNiArMTIzNiwxMyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAg
ICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAgICB9KTsKIAorICAg
ICAgICBtX2luc3RhbnRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0
IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
cik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJv
dG90eXBlID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgaW5p
dC5zZXQoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBpbnN0YW50UHJvdG90eXBlKSk7CisgICAgICAgICAgICB9KTsKKwogICAgICAgICBtX3Bs
YWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMjEyOCw2ICsy
MTM3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBj
ZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW5zdGFudFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCAxMjhiMzk5MTBkZDgwNTdmN2FhYmI1OTc3N2NhNjgwZTlkZjYxODkyLi5lZDVjNWY4
ZDI5MzcyZTljNzJmM2UxZjUyYmVlMWMzMWZmYWE0ODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBwdWJs
aWM6CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxl
bmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGltZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV90aW1lWm9uZVN0cnVjdHVyZTsKIApAQCAt
ODc3LDYgKzg3OCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogY2FsZW5kYXJTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVj
dHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2R1cmF0aW9uU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogaW5zdGFudFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
aW5zdGFudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAg
IFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0
dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IGZiNjA3NGNiODU4NGY5Y2M4MGFhYjdlMmI0MTFh
ZjYwZDJiMWYwZDYuLjAwOTllMmVmOWQ2MGYwNDkyMmE3ZDY0ODg2MjAyZDZmNWJiYjQ0YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC04OCwyMCArODksMjAgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlv
bjo6ZnJvbUR1cmF0aW9uTGlrZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIElT
Tzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGhhc1JlbGV2YW50UHJvcGVydHkgPSBm
YWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVtcG9yYWxVbml0czsg
aSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UtPmdldChnbG9iYWxP
YmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwgc3RhdGljX2Nhc3Q8VGVtcG9yYWxV
bml0PihpKSkpOworICAgIGZvciAoVGVtcG9yYWxVbml0IHVuaXQgOiB0ZW1wb3JhbFVuaXRzSW5U
YWJsZU9yZGVyKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UtPmdldChn
bG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwgdW5pdCkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICh2YWx1ZS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSAwOworICAgICAgICAgICAg
cmVzdWx0W3VuaXRdID0gMDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgaGFzUmVsZXZhbnRQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdFtpXSA9IHZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJlc3VsdFt1bml0XSA9IHZhbHVl
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKLSAgICAgICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W2ldKSkgeworICAgICAg
ICBpZiAoIWlzSW50ZWdlcihyZXN1bHRbdW5pdF0pKSB7CiAgICAgICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMg
bXVzdCBiZSBpbnRlZ2VycyJfcyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9
CkBAIC0xNjQsNiArMTY1LDMxIEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246
OnRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJu
IFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVj
dHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0
aW9uICggdGVtcG9yYWxEdXJhdGlvbkxpa2UsIGRpc2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9y
YWxkdXJhdGlvbgorY29uc3QgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9M
aW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVt
VmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0
cykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRp
b24gPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghaXNWYWxpZER1cmF0aW9u
KGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNv
bnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgZm9y
IChUZW1wb3JhbFVuaXQgdW5pdCA6IGRpc2FsbG93ZWRVbml0cykgeworICAgICAgICBpZiAoZHVy
YXRpb25bdW5pdF0pIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBtYWtlU3RyaW5nKCJBZGRpbmcgIl9zLCB0ZW1wb3JhbFVuaXRQcm9wZXJ0eU5hbWUo
dm0sIHVuaXQpLnB1YmxpY05hbWUoKSwgInMgbm90IHN1cHBvcnRlZCBieSBUZW1wb3JhbC5JbnN0
YW50LiBUcnkgVGVtcG9yYWwuWm9uZWREYXRlVGltZSBpbnN0ZWFkIl9zKSk7CisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGR1cmF0aW9uOwor
fQorCiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKQEAgLTIzMCwyMCArMjU2LDIwIEBAIElTTzg2MDE6OkR1cmF0aW9u
IFRlbXBvcmFsRHVyYXRpb246OndpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqCiAKICAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQ7CiAgICAgYXV0byBoYXNSZWxl
dmFudFByb3BlcnR5ID0gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZlRlbXBvcmFsVW5pdHM7IGkrKykgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZHVyYXRpb25M
aWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbFVuaXRQcm9wZXJ0eU5hbWUodm0sIHN0YXRp
Y19jYXN0PFRlbXBvcmFsVW5pdD4oaSkpKTsKKyAgICBmb3IgKFRlbXBvcmFsVW5pdCB1bml0IDog
dGVtcG9yYWxVbml0c0luVGFibGVPcmRlcikgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZHVy
YXRpb25MaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbFVuaXRQcm9wZXJ0eU5hbWUodm0s
IHVuaXQpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAg
ICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgcmVzdWx0W2ldID0g
bV9kdXJhdGlvbltpXTsKKyAgICAgICAgICAgIHJlc3VsdFt1bml0XSA9IG1fZHVyYXRpb25bdW5p
dF07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGhhc1JlbGV2
YW50UHJvcGVydHkgPSB0cnVlOwotICAgICAgICByZXN1bHRbaV0gPSB2YWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgICAgICByZXN1bHRbdW5pdF0gPSB2YWx1ZS50b051bWJlcihnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0g
ICAgICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFtpXSkpIHsKKyAgICAgICAgaWYgKCFpc0ludGVn
ZXIocmVzdWx0W3VuaXRdKSkgewogICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgaW50ZWdl
cnMiX3MpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDgyZjJkNWQ2
NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmViZTI3MzJhMzVmY2JiM2Y4N2FlODgx
M2U3MGFlM2RiOTg0ODUwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b1RlbXBvcmFsRHVyYXRp
b24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgY29uc3QgSVNPODYwMTo6
RHVyYXRpb24gdG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpOwogICAgIHN0
YXRpYyBUZW1wb3JhbER1cmF0aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAg
ICAgc3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZTY5YTE0M2M5ZjVmMTkyNjA5YTA4Y2Q3YTIyNGUzNGNlMTYx
ZjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmNwcApAQCAtMCwwICsxLDQyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxJbnN0YW50LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklT
Tzg2MDEuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQmln
SW50LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9u
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1w
b3JhbEluc3RhbnQpIH07CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK1RlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9CisK
K3ZvaWQgVGVtcG9yYWxJbnN0YW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
Cit9CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkK
K3sKKyAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgYXV0byogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50Pih2bS5oZWFwKSkgVGVt
cG9yYWxJbnN0YW50KHZtLCBzdHJ1Y3R1cmUsIGV4YWN0VGltZSk7CisgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworLy8gQ3JlYXRlVGVtcG9y
YWxJbnN0YW50ICggZXBvY2hOYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxp
bnN0YW50CitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxp
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJU084NjAxOjpFeGFjdFRpbWUg
ZXhhY3RUaW1lLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKCFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGV4YWN0VGltZS5wcmludCgpLCAiIGVw
b2NoIG5hbm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3Jh
bC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJl
dHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5z
dGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBv
cmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzID0gdmFsdWUudG9CaWdJbnQoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
SlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBJ
bnQxMjggbG93IHtiaWdpbnQtPmxlbmd0aCgpID4gMCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwfTsK
KyAgICBJbnQxMjggaGlnaCB7YmlnaW50LT5sZW5ndGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEp
IDogMH07CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSB7KGhpZ2ggPDwgNjQgfCBs
b3cpICogKGJpZ2ludC0+c2lnbigpID8gLTEgOiAxKX07CisKKyAgICBpZiAoYmlnaW50LT5sZW5n
dGgoKSA+IDIgfHwgIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0Fz
U3RyaW5nIHtiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApfTsKKyAgICAgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAg
ICAgICAgfQorCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBt
YWtlU3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJnQXNTdHJpbmcpLCAiIGVwb2NoIG5hbm9zZWNv
bmRzIGlzIG91dHNpZGUgb2YgdGhlIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFu
dCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3Jl
YXRlKHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1
Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8gVG9UZW1wb3JhbEluc3RhbnQgKCBpdGVtICkK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVt
cG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsSW5z
dGFudD4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KGl0ZW1W
YWx1ZSk7CisKKyAgICAvLyBUT0RPOiB3aGVuIFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUgbGFuZHMK
KyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsWm9uZWREYXRlVGltZT4odm0p
KQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFpvbmVkRGF0ZVRpbWUqPihp
dGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBTdHJpbmcgc3RyaW5nID0gaXRlbVZhbHVl
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEV4YWN0VGltZSA9IElTTzg2MDE6OnBhcnNl
SW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2VkRXhhY3RUaW1lKSB7CisgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCInIl9zLCBlbGxp
cHNpemVBdCgxMDAsIHN0cmluZyksICInIGlzIG5vdCBhIHZhbGlkIFRlbXBvcmFsLkluc3RhbnQg
c3RyaW5nIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVy
biB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFyc2VkRXhhY3RUaW1lLnZhbHVlKCkp
OworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb20gKCBpdGVtICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbQorVGVtcG9y
YWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbEluc3RhbnQ+KHZtKSkg
eworICAgICAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0ganNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KGl0ZW1WYWx1ZSktPm1fZXhhY3RUaW1lOworICAgICAgICByZXR1cm4gVGVtcG9y
YWxJbnN0YW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBl
eGFjdFRpbWUpOworICAgIH0KKworICAgIHJldHVybiB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBp
dGVtVmFsdWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMgKCBl
cG9jaFNlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2hzZWNvbmRzCitUZW1wb3JhbEluc3RhbnQqIFRlbXBv
cmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGVwb2NoU2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBkb3VibGUgZXBvY2hTZWNvbmRzID0gZXBvY2hTZWNvbmRzVmFsdWUudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAg
IC8vIE51bWJlclRvQmlnSW50IHN0ZXAgMQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2NoU2Vjb25k
cykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VT
dHJpbmcoZXBvY2hTZWNvbmRzLCAiIGlzIG5vdCBhIHZhbGlkIGludGVnZXIgbnVtYmVyIG9mIGVw
b2NoIHNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
SVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVw
b2NoU2Vjb25kcyhlcG9jaFNlY29uZHMpOworICAgIHJldHVybiB0cnlDcmVhdGVJZlZhbGlkKGds
b2JhbE9iamVjdCwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hNaWxsaXNlY29uZHMgKCBlcG9jaE1pbGxpc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pbGxpc2Vj
b25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vj
b25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWlsbGlzZWNv
bmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaE1pbGxp
c2Vjb25kcyA9IGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIC8vIE51bWJl
clRvQmlnSW50IHN0ZXAgMQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2NoTWlsbGlzZWNvbmRzKSkg
eworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmlu
ZyhlcG9jaE1pbGxpc2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBl
cG9jaCBtaWxsaXNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6
ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRzKTsKKyAgICByZXR1cm4gdHJ5
Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGV4YWN0VGltZSk7Cit9CisKKy8vIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzICggZXBvY2hNaWNyb3NlY29uZHMgKQorLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5m
cm9tZXBvY2htaWNyb3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBK
U1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzID0gZXBvY2hNaWNyb3NlY29uZHNWYWx1ZS50b0JpZ0lu
dChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OworCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE1pY3Jvc2Vjb25k
cyk7CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGlt
ZTo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKEpTQmlnSW50Ojp0b0JpZ1VJbnQ2NChiaWdpbnQpKTsK
KyAgICBpZiAoYmlnaW50LT5sZW5ndGgoKSA+IDEgfHwgIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIDEwKTsKKyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdp
dmVuIG51bWJlciBvZiJfczsKKyAgICAgICAgfQorCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJnQXNTdHJp
bmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBm
b3IgVGVtcG9yYWwuSW5zdGFudCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUo
KSwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vj
b25kcyAoIGVwb2NoTmFub3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2huYW5vc2Vjb25kcworVGVtcG9y
YWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNy
ZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBlcG9jaE5hbm9zZWNvbmRzVmFsdWUpKTsKK30KKwor
Ly8gVGVtcG9yYWwuSW5zdGFudC5jb21wYXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1Zh
bHVlIFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIG9uZVZhbHVlLCBKU1ZhbHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3Qs
IG9uZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
VGVtcG9yYWxJbnN0YW50KiB0d28gPSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmV4
YWN0VGltZSgpID4gdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEp
OworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpIDwgdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKC0xKTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK2NvbnN0
IElTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsSW5zdGFudDo6ZGlmZmVyZW5jZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbEluc3RhbnQqIG90aGVyLCBKU1ZhbHVlIG9wdGlv
bnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9w
dGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxl
c3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21h
bGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsK
KworICAgIFRlbXBvcmFsVW5pdCBkZWZhdWx0TGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihzbWFsbGVz
dFVuaXQsIFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3Jh
bExhcmdlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9LCBkZWZhdWx0TGFyZ2VzdFVu
aXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxV
bml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihkZWZhdWx0TGFyZ2VzdFVuaXQpOwor
CisgICAgaWYgKHNtYWxsZXN0ICYmIGxhcmdlc3QgJiYgc21hbGxlc3QgPCBsYXJnZXN0KSB7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0
IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3Vu
ZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1heEluY3JlbWVudCA9IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVu
aXQpOworICAgIEFTU0VSVChtYXhJbmNyZW1lbnQgJiYgKm1heEluY3JlbWVudCA8PSAxMDAwKTsg
Ly8gdW5ib3VuZGVkIGluY3JlbWVudHMgYXJlIGltcG9zc2libGUgd2l0aCBUZW1wb3JhbC5JbnN0
YW50CisgICAgdW5zaWduZWQgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heEluY3JlbWVudCwgZmFsc2UpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBJbnQxMjggcm91bmRlZERpZmYgPSBtX2V4
YWN0VGltZS5kaWZmZXJlbmNlKG90aGVyLT5tX2V4YWN0VGltZSwgaW5jcmVtZW50LCBzbWFsbGVz
dFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAgLy8gTk9URTogRHVyYXRpb24gZmllbGRzIGFyZSBj
dXJyZW50bHkgZG91YmxlcywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YKKyAgICAvLyBuYW5vc2Vj
b25kcyBtYXkgbm90IGZpdCBpbiBhIGRvdWJsZS4gVGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UgaWYg
dGhlCisgICAgLy8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHVyYXRpb24gY2hhbmdlcy4K
KyAgICBBU1NFUlQocm91bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwIDwgSU5UNjRfTUFYKTsKKyAg
ICBkb3VibGUgc2Vjb25kcyB7c3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2NF90
Pihyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcwMDApKX07CisgICAgZG91YmxlIG5hbm9zZWNvbmRz
UmVtYWluZGVyIHtzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJvdW5k
ZWREaWZmICUgMScwMDAnMDAwJzAwMCkpfTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQg
ezAsIDAsIDAsIDAsIDAsIDAsIHNlY29uZHMsIDAsIDAsIG5hbm9zZWNvbmRzUmVtYWluZGVyfTsK
KworICAgIFRlbXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRl
bXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9y
YWxVbml0OjpNaW51dGU6IHJldHVybiAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNv
bmQ6IHJldHVybiA4NjQwMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJl
dHVybiA4LjY0ZTc7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4g
OC42NGUxMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRl
MTM7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6
Ok1vbnRoOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpEYXk6CisgICAgZGVmYXVsdDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCitjb25zdCBJU084NjAxOjpFeGFjdFRpbWUgVGVtcG9yYWxJbnN0
YW50Ojpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNW
YWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlv
bnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3Qg
PSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxV
bml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBv
cmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBpZiAoIXNtYWxsZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3B0aW9uIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0
VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCk7CisKKyAg
ICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgaW5jcmVtZW50ID0gdGVtcG9y
YWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1JbmNyZW1l
bnQoc21hbGxlc3RVbml0KSwgdHJ1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiBtX2V4YWN0VGltZS5yb3VuZChpbmNyZW1lbnQsIHNtYWxsZXN0
VW5pdCwgcm91bmRpbmdNb2RlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUu
dG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQucHJvdG90eXBlLnRvc3RyaW5nCitTdHJpbmcgVGVt
cG9yYWxJbnN0YW50Ojp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlv
bnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
ICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBKU09iamVjdCog
dGltZVpvbmUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdGltZVpvbmVWYWx1ZSA9IG9wdGlvbnMt
PmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRpbWVab25lKTsKKyAgICBpZiAo
IXRpbWVab25lVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aW1lWm9uZSA9IFRlbXBv
cmFsVGltZVpvbmU6OmZyb20oZ2xvYmFsT2JqZWN0LCB0aW1lWm9uZVZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICBQcmVjaXNpb25E
YXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJvdW5kaW5nTW9k
ZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUg
Z2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lz
aW9uKSA9PSBQcmVjaXNpb246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6
VHJ1bmMpCisgICAgICAgIHJldHVybiB0b1N0cmluZyh0aW1lWm9uZSk7CisKKyAgICBJU084NjAx
OjpFeGFjdFRpbWUgbmV3RXhhY3RUaW1lIHttX2V4YWN0VGltZS5yb3VuZChkYXRhLmluY3JlbWVu
dCwgZGF0YS51bml0LCByb3VuZGluZ01vZGUpfTsKKworICAgIC8vIEZJWE1FOiBNaXNzaW5nLCBy
ZWxpZXMgb24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJlICEgQ3Jl
YXRlVGVtcG9yYWxJbnN0YW50KHJvdW5kZWROcykuCisgICAgLy8gLi4uCisgICAgLy8gMS4gSWYg
X291dHB1dFRpbWVab25lXyBpcyAqdW5kZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4gU2V0IF9v
dXRwdXRUaW1lWm9uZV8gdG8gISBDcmVhdGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiopLgorICAg
IC8vIDEuIExldCBfaXNvQ2FsZW5kYXJfIGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCkuCisgICAg
Ly8gMS4gTGV0IF9kYXRlVGltZV8gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRhdGVUaW1l
Rm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9pbnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisgICAgSlNP
YmplY3QqIG91dHB1dFRpbWVab25lID0gdGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRpbWVab25l
KSB7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6IFRl
bXBvcmFsLkluc3RhbnQudG9TdHJpbmcoe3RpbWVab25lfSkgbm90IGltcGxlbWVudGVkIHlldCJf
cyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nKG5l
d0V4YWN0VGltZSwgdGltZVpvbmUsIGRhdGEpOworfQorCisvLyBUZW1wb3JhbEluc3RhbnRUb1N0
cmluZyAoIGluc3RhbnQsIHRpbWVab25lLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9zdHJpbmcK
K1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKGNvbnN0IElTTzg2MDE6OkV4YWN0VGlt
ZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24p
Cit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRpbWUge3N0YXRpY19jYXN0
PGRvdWJsZT4oZXhhY3RUaW1lLmVwb2NoTWlsbGlzZWNvbmRzKCkpLCBMb2NhbFRpbWVPZmZzZXQg
eyB9fTsKKworICAgIC8vIE1heGltdW0gYW1vdW50IG9mIHNwYWNlIHdlIG5lZWQgaW4gdGhlIHNp
bXBsZSBmb3JtYXR0aW5nIGJ1ZmZlcjoKKyAgICAvLyA3IChtYXguIGRpZ2l0cyBpbiB5ZWFyKQor
ICAgIC8vICsgMyAqIDQgKDIgZGlnaXRzIGFuZCAxIHNlcGFyYXRvciBlYWNoIGZvciBtb250aCwg
ZGF5LCBob3VyLCBtaW51dGUpCisgICAgLy8gKyAxIGZvciBudWxsIHRlcm1pbmF0aW9uID0gMjAu
CisgICAgY2hhciBidWZmZXJbMjBdOworICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhl
IGJvdW5kcyBvZiAwIGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvIHVzZQorICAgIC8vIHRo
ZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisgICAgaW50IGNoYXJhY3RlcnNX
cml0dGVuOworICAgIGlmIChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPiA5OTk5IHx8IGdyZWdv
cmlhbkRhdGVUaW1lLnllYXIoKSA8IDEwMDApCisgICAgICAgIGNoYXJhY3RlcnNXcml0dGVuID0g
c25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUrMDdkLSUwMmQtJTAyZFQlMDJkOiUw
MmQiLCBncmVnb3JpYW5EYXRlVGltZS55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoKCkg
KyAxLCBncmVnb3JpYW5EYXRlVGltZS5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGltZS5ob3Vy
KCksIGdyZWdvcmlhbkRhdGVUaW1lLm1pbnV0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGNoYXJh
Y3RlcnNXcml0dGVuID0gc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUwNGQtJTAy
ZC0lMDJkVCUwMmQ6JTAyZCIsIGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSwgZ3JlZ29yaWFuRGF0
ZVRpbWUubW9udGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoRGF5KCksIGdyZWdvcmlh
bkRhdGVUaW1lLmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUubWludXRlKCkpOworICAgIEFTU0VS
VChjaGFyYWN0ZXJzV3JpdHRlbiA+IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3Rl
cnNXcml0dGVuKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNoYXJhY3RlcnNXcml0dGVuKSA+PSBzaXplb2YoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJu
ICIiX3M7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQo
YnVmZmVyKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG5zUGVyU2Vjb25kIHsxJzAwMCcw
MDAnMDAwfTsKKyAgICBpbnQgZnJhY3Rpb24ge2V4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0aW9u
KCl9OworICAgIGlmIChmcmFjdGlvbiA8IDApCisgICAgICAgIGZyYWN0aW9uICs9IG5zUGVyU2Vj
b25kOworCisgICAgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoYnVpbGRlciwgZ3JlZ29yaWFuRGF0
ZVRpbWUuc2Vjb25kKCksIGZyYWN0aW9uLCBwcmVjaXNpb24pOworCisgICAgaWYgKHRpbWVab25l
KSB7CisgICAgICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAg
ICAgIC8vICAgMS4gTGV0IF90aW1lWm9uZVN0cmluZ18gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRP
ZmZzZXRTdHJpbmdGb3IoX3RpbWVab25lXywgX2luc3RhbnRfKS4KKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ1onKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKKwor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMmU3NGM4MzFlMGUzMDJjNjYxZGFhZmQyZGUyMGJjYWIwZGY2OGZkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBUZW1wb3JhbEluc3RhbnQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
bS50ZW1wb3JhbEluc3RhbnRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBUZW1w
b3JhbEluc3RhbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElTTzg2MDE6OkV4YWN0
VGltZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0ds
b2JhbE9iamVjdCosIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSwgU3RydWN0dXJlKiA9IG51bGxw
dHIpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRvSW5z
dGFudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3Rh
bnQqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJ
bnN0YW50KiBmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAg
c3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlj
cm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFs
SW5zdGFudCogZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CisKKyAgICBjb25zdGV4cHIgY29uc3QgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhhY3RUaW1lOyB9CisKKyAgICBjb25zdCBJU084NjAxOjpE
dXJhdGlvbiBkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiwgVGVtcG9yYWxJbnN0YW50KiwgSlNW
YWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBjb25zdCBJU084NjAxOjpFeGFjdFRpbWUgcm91bmQo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0
cmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5n
IHRvU3RyaW5nKEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHIsIFByZWNpc2lvbkRhdGEgcHJl
Y2lzaW9uID0geyB7IFByZWNpc2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNv
bmQsIDEgfSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0b1N0cmluZyhtX2V4YWN0VGlt
ZSwgdGltZVpvbmUsIHByZWNpc2lvbik7CisgICAgfQorCitwcml2YXRlOgorICAgIFRlbXBvcmFs
SW5zdGFudChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBh
cnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgY29u
c3QgSVNPODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBJU084NjAxOjpFeGFjdFRp
bWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7CisKKyAgICBJU084NjAxOjpF
eGFjdFRpbWUgbV9leGFjdFRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWUzZGQ5MzdmZDc4ZWNiM2E5ZDRlZjhjZWFmNjEz
NTczYTI0MThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIgorCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yKTsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3JGdW5jRnJvbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVu
Y0Zyb21FcG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSk7CisKK30KKworI2lu
Y2x1ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
clRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JUYWJsZQorICBmcm9tICAgICAg
ICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hTZWNvbmRzICAgICAgIHRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hNaWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQor
ICBmcm9tRXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zy
b21FcG9jaE1pY3Jvc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hOYW5v
c2Vjb25kcyAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNv
bmRzICAgRG9udEVudW18RnVuY3Rpb24gMQorICBjb21wYXJlICAgICAgICAgICAgICAgIHRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IqIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcih2bSwg
c3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGluc3RhbnRQ
cm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50
ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsSW5zdGFudCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpOworCitU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2Fs
bFRlbXBvcmFsSW5zdGFudCwgY29uc3RydWN0VGVtcG9yYWxJbnN0YW50KQoreworfQorCit2b2lk
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIkluc3RhbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRo
b3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgaW5zdGFudFByb3RvdHlwZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIGluc3RhbnRQcm90b3R5cGUtPnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwg
dGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmpl
Y3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBK
U0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZtLCBpbnN0YW50U3RydWN0dXJlLCBuZXdUYXJnZXQs
IGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNaXNzaW5nIHJl
cXVpcmVkIGVwb2NoTmFub3NlY29uZHMgYXJndW1lbnQgdG8gVGVtcG9yYWwuSW5zdGFudCJfcyk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLCBzdHJ1Y3R1cmUpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihjYWxsVGVtcG9yYWxJbnN0YW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW5zdGFudCIpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRz
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hN
aWxsaXNlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNG
cm9tRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bEluc3RhbnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODdkOWRl
MzIwMWIyYzgzYWYzZGVkZTJhMjE4OTVhOGYyZjY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTsKKworY2xh
c3MgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0
ZToKKyAgICBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKK307
CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcxMjRjMjYwNzNiMTkwNGRjMzdiYjY1YzQ1MWZmNTY2
ZGYxYTlmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAi
SVNPODYwMS5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNBZGQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2Up
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04p
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1RvTG9jYWxlU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25k
cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuSW5zdGFudCIs
ICZCYXNlOjpzX2luZm8sICZpbnN0YW50UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGluc3RhbnRQcm90b3R5cGVU
YWJsZQorICBhZGQgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0Fk
ZCAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3QgICAgICAg
ICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIHVudGlsICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jVW50aWwgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5j
ZSAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQgICAgICAgICAgICAgIHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIGVxdWFscyAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1
YWxzICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAg
ICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDAKKyAgdG9KU09OICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUZ1bmNUb0pTT04gICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvTG9j
YWxlU3RyaW5nICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgICAgdGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDAKKyAgZXBvY2hTZWNvbmRzICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVw
b2NoU2Vjb25kcyAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9j
aE1pbGxpc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNl
Y29uZHMgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWljcm9zZWNv
bmRzICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hOYW5vc2Vjb25kcyAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitzdGF0aWMgY29uc3RleHByIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzID0g
eworICAgIFRlbXBvcmFsVW5pdDo6WWVhciwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1vbnRoLAorICAg
IFRlbXBvcmFsVW5pdDo6V2VlaywKKyAgICBUZW1wb3JhbFVuaXQ6OkRheSwKK307CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIGNvbnN0IElTTzg2MDE6OkR1cmF0
aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFj
dFRpbWUoKS5hZGQoZHVyYXRpb24pOworICAgIGlmICghbmV3RXhhY3RUaW1lKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lk
ZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJ
bnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpOwor
fQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGlu
c3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5z
dWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAg
Y29uc3QgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xp
bWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2Fs
bG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0
VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZCgtZHVyYXRpb24pOworICAgIGlmICghbmV3
RXhhY3RUaW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiU3VidHJhY3Rpb24gaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFs
Lkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgKm5ld0V4YWN0VGltZSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFu
dCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIElu
c3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFu
dDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0g
aW5zdGFudC0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25T
dHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFu
dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9y
YWxJbnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBv
cHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiBy
ZXN1bHQgPSBvdGhlci0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5k
dXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
Lkluc3RhbnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3Mp
OworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5k
KGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVx
dWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVt
cG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3Rh
bnQtPmV4YWN0VGltZSgpID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUu
dG9zdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFu
dCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90
eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2
bSwgaW5zdGFudC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFu
dCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90
eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0s
IGluc3RhbnQtPnRvU3RyaW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBh
cyBhIEpTQnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgSW5zdGFudCJfcyk7CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IElu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0
U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBmb3JtYXR0ZXItPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRl
VGltZUZvcm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwg
aW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxl
ZC4gVG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFy
ZSJfcyk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRl
ckVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0
YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkp
OworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
R2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JC
aWdJbnQzMihnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNv
bmRzKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25k
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20o
Z2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRk
ZmIxNDY5ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmlu
YWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0
aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IDgzY2Q1ZGIwZDkzZDBhYmY5
YzJhZWFhNDk1N2U5MjllOTg4YzQ2ZDIuLjFlYTJiNGYxMzkxNGM3ZjZlNTkwMjI3OGM5NTFjZTRh
MGRhMzU2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5jcHAKQEAgLTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5k
YXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5U
aW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBj
cmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICBy
ZXR1cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVy
YXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5
cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0
b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1w
b3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
OworICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJv
dG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29u
c3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0
KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04
OSw2ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUK
ICAgQ2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51
bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3Ry
dWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAgICBj
cmVhdGVJbnN0YW50Q29uc3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sK
ICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51
bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0
cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBj
cmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sK
QEAgLTM0OSw2ICszNjAsMTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAK
Ky8vIEZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9z
ZWNvbmQsIG5hbm9zZWNvbmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBm
b3JtYXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBz
ZWNvbmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAg
ICBpZiAocHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7Cisg
ICAgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNp
b24ucHJlY2lzaW9uKTsKK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0lu
Y3JlbWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQg
dW5pdCkKQEAgLTQxMCw2ICs0MzIsNDMgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
ZG91YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4
KQoreworICAgIHJldHVybiB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwg
YnV0IHdpdGggSW50MTI4CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwg
SW50MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVu
dCA9PSAxKQorICAgICAgICByZXR1cm4geDsKKworICAgIEludDEyOCBxdW90aWVudCA9IHggLyBp
bmNyZW1lbnQ7CisgICAgSW50MTI4IHJlbWFpbmRlciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYg
KCFyZW1haW5kZXIpCisgICAgICAgIHJldHVybiB4OworCisgICAgYm9vbCBzaWduID0gcmVtYWlu
ZGVyIDwgMDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2Vp
bDoKKyAgICAgICAgaWYgKCFzaWduKQorICAgICAgICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBpZiAoc2lnbikK
KyAgICAgICAgICAgIHF1b3RpZW50LS07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpUcnVuYzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6Okhh
bGZFeHBhbmQ6CisgICAgICAgIC8vICJoYWxmIHVwIGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBp
ZiAoYWJzKHJlbWFpbmRlciAqIDIpID49IGluY3JlbWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50
ICs9IHNpZ24gPyAtMSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVv
dGllbnQgKiBpbmNyZW1lbnQ7Cit9CisKIFRlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJm
bG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewog
ICAgIHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0
aW9ucywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggYzRiMWQ0
NzI2YjM0NmQ1MTlhNTZmYWEzMjE2YmRmYzg4ZTk5MjE4My4uN2JhM2YxNGFjYzY1ZmM0NDE1NmEw
N2Q0ZjYwMjg4N2IxMDEyNWU4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTIsNiArNTMsMjAgQEAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JB
TF9VTklUUyhKU0NfQ09VTlQKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1w
b3JhbFBsYWluVGltZVVuaXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0Nf
Q09VTlRfVEVNUE9SQUxfVU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUwog
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3RhYmxlLXRlbXBvcmFsLXRl
bXBvcmFsZHVyYXRpb25saWtlLXByb3BlcnRpZXMKK3N0YXRpYyBjb25zdGV4cHIgVGVtcG9yYWxV
bml0IHRlbXBvcmFsVW5pdHNJblRhYmxlT3JkZXJbbnVtYmVyT2ZUZW1wb3JhbFVuaXRzXSA9IHsK
KyAgICBUZW1wb3JhbFVuaXQ6OkRheSwKKyAgICBUZW1wb3JhbFVuaXQ6OkhvdXIsCisgICAgVGVt
cG9yYWxVbml0OjpNaWNyb3NlY29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLAor
ICAgIFRlbXBvcmFsVW5pdDo6TWludXRlLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAg
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLAorICAgIFRlbXBvcmFsVW5pdDo6U2Vjb25kLAorICAg
IFRlbXBvcmFsVW5pdDo6V2VlaywKKyAgICBUZW1wb3JhbFVuaXQ6OlllYXIsCit9OworCiBjbGFz
cyBUZW1wb3JhbE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKQEAgLTEwMiw5ICsxMTcsMTEg
QEAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGVtcG9yYWxGcmFjdGlvbmFsU2Vjb25kRGlnaXRz
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QKIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1By
ZWNpc2lvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFJvdW5kaW5nTW9k
ZSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUm91bmRp
bmdNb2RlKTsKIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXIm
LCB1bnNpZ25lZCBmcmFjdGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPik7Cit2
b2lkIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBzZWNv
bmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhKTsKIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1w
b3JhbFJvdW5kaW5nSW5jcmVtZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkaXZpZGVuZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91Ymxl
IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlLCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGlu
Z01vZGUpOworSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4LCBJbnQxMjggaW5j
cmVtZW50LCBSb3VuZGluZ01vZGUpOwogCiBlbnVtIGNsYXNzIFRlbXBvcmFsT3ZlcmZsb3cgOiBi
b29sIHsKICAgICBDb25zdHJhaW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggOTk2YTA2ZGFhYmE4MmNjZWZiNDNkZjNmNjVmMTMxZTZmZGU2ZWUwNy4uNDhmZDZjOWE2Njlm
NTIyY2U0NzNhMmEzNzIxNGQ4ZjY4YTY1NWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24u
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWlu
VGltZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVu
bmVyVXRpbHMuaCIKQEAgLTE1OTEsNiArMTU5Miw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVy
YXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJ
bnN0YW50U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsSW5zdGFudCkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1VpbnQ4QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA3
YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4Li5hYmEyZjY2YTA3YjM3YjE1
YzU4NWEyZjg2ZjBiNmNlNGYyZjI4NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTE4Niw2ICsxODYsNyBAQCBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKIGNsYXNzIFN5bWJvbDsK
IGNsYXNzIFRlbXBvcmFsRHVyYXRpb247CitjbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBU
eXBlZEFycmF5Q29udHJvbGxlcjsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5s
aW5rZWRFdmFsQ29kZUJsb2NrOwpAQCAtNTk3LDYgKzU5OCw3IEBAIHB1YmxpYzoKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxl
bmRhclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dGVtcG9yYWxJbnN0YW50U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1
YmQwYTg4ZWFiYTQ2NmI2ZTZjMGFkNjZkYzAyZjUyNTc0MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRl
ZTQ4NTUzNjE3ZmNhMDZkOGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGgu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBAIC0zODgsNiArMzg4LDExIEBAIGlu
bGluZSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFw
WWVhcikKICAgICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAKK2lubGluZSBkb3VibGUgdGltZVRvTVMo
ZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKK3sKKyAgICBy
ZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRz
UGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Cit9CisKIC8vIFJldHVy
bnMgY29tYmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogV1RGX0VYUE9S
VF9QUklWQVRFIExvY2FsVGltZU9mZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91Ymxl
IHV0Y0luTWlsbGlzZWNvbmRzLCBUaW1lVHlwZSA9IFVUQ1RpbWUpOwogCkBAIC00MTAsNiArNDE1
LDcgQEAgdXNpbmcgV1RGOjptc1RvSG91cnM7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1
c2luZyBXVEY6OnNlY29uZHNQZXJNaW51dGU7CiB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxs
VGVybWluYXRlZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6OnRpbWVUb01TOwogdXNpbmcgV1RGOjpt
YWtlUkZDMjgyMkRhdGVTdHJpbmc7CiB1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKIHVzaW5n
IFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvSW50MTI4LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaAppbmRleCA2NWZlODMyNDNhMjA4
M2FjY2ZjNjljMGM2MzVkNTZhODgwMzQ1NjQwLi44YTRkZjM0MGE4MjE0ODUxYTVjNTJiYTAzNjM5
OGVlMmI4MGE5Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9JbnQxMjguaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgICAg
IDogbG93XyB7c3RhdGljX2Nhc3Q8c3RkOjp1aW50NjRfdD4obil9CiAgICAgICAgICwgaGlnaF8g
ey1zdGF0aWNfY2FzdDxzdGQ6OnVpbnQ2NF90PihuIDwgMCl9CiAgICAgeyB9CisgICAgY29uc3Rl
eHByIEludDEyOEltcGwoY29uc3QgSW50MTI4SW1wbDwhSVNfU0lHTkVEPiBuKQorICAgICAgICA6
IGxvd18ge24ubG93KCl9LCBoaWdoXyB7bi5oaWdoKCl9IHsgfQogICAgIGNvbnN0ZXhwciBJbnQx
MjhJbXBsKGNvbnN0IEludDEyOEltcGwgJikgPSBkZWZhdWx0OwogICAgIGNvbnN0ZXhwciBJbnQx
MjhJbXBsKEludDEyOEltcGwgJiYpID0gZGVmYXVsdDsKICAgICBjb25zdGV4cHIgSW50MTI4SW1w
bCAmb3BlcmF0b3I9KGNvbnN0IEludDEyOEltcGwgJikgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjZmU0MDk4MTc5Y2Ew
ZmM0Njg0OTNhMjBlZjRjMzE2YzAyYTkxOTM5Li4wNGRlOGE1OTE1NWEzNzQ5YzM1OTlhYmMyMzBj
NGY5NzBhYmNjYWYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA5LTIzICBQaGlsaXAgQ2hpbWVudG8g
IDxwaGlsaXAuY2hpbWVudG9AZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBU
ZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZE5vdEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKGluc3RhbnRzLmZvckVhY2gpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LlRl
bXBvcmFsLkluc3RhbnQpOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6IE5vIG5lZWQg
dG8gaWdub3JlIGFsbCBUZW1wb3JhbC5JbnN0YW50IHRlc3RzCisgICAgICAgICAgYW55bW9yZSwg
b25seSB0aGUgb25lcyBmb3IgdGhlIHVuaW1wbGVtZW50ZWQgbWV0aG9kcy4KKwogMjAyMS0wOS0y
MyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pT
Q10gSGFuZGxlIHN5bnRhY3RpYyBwcm9kdWN0aW9uIGZvciBgI3ggaW4gZXhwcmAgY29ycmVjdGx5
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzIGIvSlNUZXN0
cy9zdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTY4ZTdhMTYyNzEwYzJm
ODU1MzgzMjE3NjYzZGNhYTJiOWJkN2QzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdGVtcG9yYWwtaW5zdGFudC5qcwpAQCAtMCwwICsxLDI5MSBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkTm90QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgPT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGEgdmFsdWUgdG8g
YmUgZGlmZmVyZW50IGZyb20gJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYg
KG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChtZXNzYWdlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXScpIHsKKyAgICAgICAgICAg
IGlmICghbWVzc2FnZS50ZXN0KFN0cmluZyhlcnJvcikpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5nKGVycm9yKX0nIHRvIG1hdGNoICR7bWVzc2Fn
ZX0hYCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJy
b3IpLCBtZXNzYWdlKTsKKyAgICAgICAgfQorfQorCisvLyBlcG9jaAoreworICAgIGNvbnN0IGlu
c3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hOYW5vc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
MC0wMS0wMVQwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3Rh
bnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDApOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAwKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50
b1N0cmluZygpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC50b0pTT04oKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8v
IHBvc2l0aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAg
IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDFfMDAwXzAwMF8wMDApLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygxXzAwMF8wMDBfMDAw
XzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDFf
MDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9j
aE5hbm9zZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWxsaXNlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAw
XzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcyMDAxLTA5LTA5
VDAxOjQ2OjQwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjAwMS0w
OS0wOVQwMTo0Njo0MFonKTsKKyAgICB9KTsKK30KKworLy8gbmVnYXRpdmUgZXBvY2ggdmFsdWUK
K3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQo
LTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hTZWNvbmRzKC0xXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwXzAw
MG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKC0xXzAw
MF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTkzOC0wNC0yNFQyMjoxMzoyMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGlu
c3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIC0xXzAw
MF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywg
LTFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jv
c2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyk7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTM4LTA0LTI0VDIyOjEzOjIw
WicpOworICAgIH0pOworfQorCisvLyBtYXhpbnQ2NCBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0
IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg5MjIzMzcyMDM2ODU0
Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
OTIyMzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzIy
NjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9y
RWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25k
cywgOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29u
ZHMsIDkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9z
ZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hOYW5vc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LnRvU3RyaW5nKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0
Nzc1ODA3WicpOworICAgIH0pOworfQorCisvLyBtaW5pbnQ2NCBlcG9jaCB2YWx1ZQoreworICAg
IGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtOTIyMzM3
MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC05MjIzMzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyksCisgICAgXTsKKyAgICBpbnN0
YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hTZWNvbmRzLCAtOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hN
aWxsaXNlY29uZHMsIC05MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pY3Jvc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIy
NDE5MlonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE2NzctMDktMjFU
MDA6MTI6NDMuMTQ1MjI0MTkyWicpOworICAgIH0pOworfQorCisvLyBtYXggSW5zdGFudCByYW5n
ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFu
dCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzKDg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDApLAorICAgICAg
ICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBf
MDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRz
KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCA4NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWls
bGlzZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pY3Jvc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAw
MF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnKzI3NTc2MC0w
OS0xM1QwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJysy
NzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbiBJbnN0YW50IHJh
bmdlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hTZWNvbmRzKC04NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMCksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC04NjQwMF8wMDAw
XzAwMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hNaWxsaXNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTg2NDAwXzAwMDBf
MDAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCks
ICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
SlNPTigpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gdG9v
IGxhcmdlCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQwMF8wMDAw
XzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgL1xiODY0MDAwMDAwMDAwMDAwMDAwMDAw
MVxiLyk7CisvLyB0b28gc21hbGwKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgLy04NjQwMDAw
MDAwMDAwMDAwMDAwMDAxXGIvKTsKKy8vIGxhcmdlciB0aGFuIG1heGludDEyOAorc2hvdWxkVGhy
b3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoMW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC9c
YjY4MDU2NDczMzg0MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBzbWFsbGVy
IHRoYW4gbWluaW50MTI4CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgt
MW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC8tNjgwNTY0NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYz
NTM2NDIyOTEyXGIvKTsKKy8vIGRvZXMgbm90IGNyYXNoIHdoZW4gYmlnaW50IGxvbmdlciB0aGFu
IG1heGludDMyIGRpZ2l0cworc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQo
QmlnSW50KCc5Jy5yZXBlYXQoMjE0NzQ4MzY0NykpKSwgUmFuZ2VFcnJvcik7CisvLyBjb25zdHJ1
Y3RzIGZyb20gc3RyaW5nCitzaG91bGRCZShuZXcgVGVtcG9yYWwuSW5zdGFudCgnMCcpLmVwb2No
TmFub3NlY29uZHMsIDBuKTsKKy8vIHRocm93cyBvbiBudW1iZXIKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBUZW1wb3JhbC5JbnN0YW50KDApLCBUeXBlRXJyb3IpOworLy8gdGhyb3dzIG9uIHN0cmlu
ZyB0aGF0IGRvZXMgbm90IGNvbnZlcnQgdG8gQmlnSW50CitzaG91bGRUaHJvdygoKSA9PiBuZXcg
VGVtcG9yYWwuSW5zdGFudCgnYWJjMTIzJyksIFN5bnRheEVycm9yKTsKKworLy8gSW5zdGFudC5m
cm9tKGluc3RhbnQpIGlzIG5vdCB0aGUgc2FtZSBvYmplY3QKK3sKKyAgICBjb25zdCBpbnN0ID0g
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDIwLTAyLTEyVDExOjQyKzAxOjAwW0V1cm9wZS9BbXN0
ZXJkYW1dJyk7CisgICAgc2hvdWxkTm90QmUoVGVtcG9yYWwuSW5zdGFudC5mcm9tKGluc3QpLCBp
bnN0KTsKK30KKworLy8gdG9TdHJpbmcKKworeworICAgIGNvbnN0IGkxID0gVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzWicpOworICAgIGNvbnN0IGkyID0gVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwWicpOworICAgIGNvbnN0IGkzID0gVGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CisKKyAgICAv
LyBkZWZhdWx0IGlzIHRvIGVtaXQgc2Vjb25kcyBhbmQgZHJvcCB0cmFpbGluZyB6ZXJvcyBhZnRl
ciB0aGUgZGVjaW1hbCcKKyAgICBzaG91bGRCZShpMS50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQx
NToyMzowMFonKTsKKyAgICBzaG91bGRCZShpMi50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToy
MzozMFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjM0WicpOworCisgICAgLy8gdHJ1bmNhdGVzIHRvIG1pbnV0ZQorICAgIFtpMSwgaTIsIGkz
XS5mb3JFYWNoKChpKSA9PiBzaG91bGRCZShpLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWlu
dXRlJyB9KSwgJzE5NzYtMTEtMThUMTU6MjNaJykpOworCisgICAgLy8gb3RoZXIgc21hbGxlc3RV
bml0cyBhcmUgYWxpYXNlcyBmb3IgZnJhY3Rpb25hbCBkaWdpdHMKKyAgICBzaG91bGRCZShpMy50
b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogMCB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFs
bGVzdFVuaXQ6ICdtaWxsaXNlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29u
ZERpZ2l0czogMyB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6
ICdtaWNyb3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czog
NiB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICduYW5vc2Vj
b25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA5IH0pKTsKKwor
ICAgIC8vIHRydW5jYXRlIG9yIHBhZCB0byAyIHBsYWNlcworICAgIHsKKyAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMiB9OworICAgICAgICBzaG91bGRC
ZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAuMDBaJyk7CisgICAg
ICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4w
MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyWicpOworICAgIH0KKyAgICAvLyBwYWQgdG8gNyBwbGFjZXMKKyAgICB7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDcgfTsKKyAg
ICAgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAw
LjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmlu
ZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDAwMFonKTsKKyAgICB9CisKKyAg
ICAvLyByb3VuZCB0byBuZWFyZXN0CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFsbGVz
dFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEt
MThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25k
RGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzWicpOworICAgIC8vIHJvdW5kIHVwCisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmco
eyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYt
MTEtMThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vj
b25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMTI0WicpOworICAgIC8vIHJvdW5kIGRvd24KKyAgICBbJ2Zsb29yJywgJ3RydW5jJ10uZm9y
RWFjaCgocm91bmRpbmdNb2RlKSA9PiB7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsg
c21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToy
M1onKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGln
aXRzOiAzLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKTsKKyAg
ICB9KTsKKworICAgIHsKKyAgICAgICAgLy8gcm91bmRpbmcgZG93biBpcyB0b3dhcmRzIHRoZSBC
aWcgQmFuZywgbm90IHRvd2FyZHMgMSBCQ0UKKyAgICAgICAgY29uc3QgaTQgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJy0wMDAwOTktMTItMTVUMTI6MDA6MDAuNVonKTsKKyAgICAgICAgc2hvdWxk
QmUoaTQudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnLCByb3VuZGluZ01vZGU6ICdm
bG9vcicgfSksICctMDAwMDk5LTEyLTE1VDEyOjAwOjAwWicpOworCisgICAgICAgIC8vIHJvdW5k
aW5nIGNhbiBhZmZlY3QgYWxsIHVuaXRzCisgICAgICAgIGNvbnN0IGk1ID0gVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTk5OVonKTsKKyAgICAgICAgc2hv
dWxkQmUoaTUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA4LCByb3VuZGluZ01v
ZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwMDAwMDBaJyk7Cisg
ICAgfQorfQorCisvLyBsZWFwIHNlY29uZCBpcyBjb25zdHJhaW5lZAorc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcyMDE2LTEyLTMxVDIzOjU5OjYwWicpfWAsICcyMDE2LTEyLTMx
VDIzOjU5OjU5WicpOworLy8gdmFyaWFudCB0aW1lIHNlcGFyYXRvcnMKK3Nob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOCAxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQx
NToyMzowMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OHQxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIHZhcmlhbnQgVVRDIGRl
c2lnbmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQx
NToyM3onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIGFueSBudW1iZXIgb2YgZGVj
aW1hbCBwbGFjZXMKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyl9YCwgJzE5
NzYtMTEtMThUMTU6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
M1onKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjM0WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2WicpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyMzQ1NlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1
NjdaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzNDU2NzhaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2NzhaJyk7Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
NDU2Nzg5WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8vIHZhcmlh
bnQgZGVjaW1hbCBzZXBhcmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3Ni0xMS0xOFQxNToyMzozMCwxMlonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKTsK
Ky8vIHZhcmlhbnQgbWludXMgc2lnbgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyXHUyMjEyMDI6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNzoy
MzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnXHUyMjEyMDA5
OTk5LTExLTE4VDE1OjIzOjMwLjEyWicpfWAsICctMDA5OTk5LTExLTE4VDE1OjIzOjMwLjEyWicp
OworLy8gbWl4dHVyZSBvZiBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVon
KTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNTIzMzAuMSswMDow
MCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAx
OTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsK
K3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNToyMzoz
MC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIz
MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworLy8gb3B0aW9uYWwgcGFydHMKK3Nob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMCswMCcpfWAsICcxOTc2LTEx
LTE4VDE1OjIzOjMwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1WicpfWAsICcxOTc2LTExLTE4VDE1OjAwOjAwWicpOworLy8gaWdub3JlcyBhbnkg
c3BlY2lmaWVkIGNhbGVuZGFyCisvLyBGSVhNRTogcGFyc2UgY2FsZW5kYXIKKy8vIHNob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODla
W3UtY2E9ZGlzY29yZF0nKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7Cisv
LyBubyBqdW5rIGF0IGVuZCBvZiBzdHJpbmcKK3Nob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaanVuaycpLCBSYW5nZUVy
cm9yKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMv
dGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAzMTJjMjY4NmYwMDRiYjYxMjRiYTdkMGViNGNiYjQ5
ZmUwMTA4ZDgwLi41ZDRmNjRiMGZkYjY0YjQ4YzIyN2Q5MjQ4NzM4NDE5NzBlMjAwNDEyIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCkBAIC0yMyw3ICsyMyw4IEBAIHNraXA6CiAgICAgLSBTaGFkb3dSZWFsbQog
ICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0NhbGVuZGFyCi0gICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50CisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZUlTTwogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvTm93CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9QbGFpbkRhdGUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0ZVRpbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439371</attachid>
            <date>2021-09-27 11:29:43 -0700</date>
            <delta_ts>2021-09-30 10:31:19 -0700</delta_ts>
            <desc>Patch for preliminary review</desc>
            <filename>bug-229826-20210927112942.patch</filename>
            <type>text/plain</type>
            <size>123244</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzZjYjg0MTUyNWVjZGU0YTQ5NmRmZGFjM2RkY2NlMzliNjNiODEwLi5lMWZhZWZlOTI2OWU1MGFk
ZGY3MTBjOWVkY2RlM2ViZTczODRjNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50
b0BnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNpbmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3Ry
aW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhl
ciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpm
cm9tSVNPUGFydHNBbmRPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6
OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6cm91bmQpOgor
ICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmRpZmZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0lTTzg2MDEuaDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yW10pOiBBZGQgYW4gb3ZlcmxvYWQgZm9yIER1cmF0aW9uW10KKyAgICAgICAgICB0aGF0IGlu
ZGV4ZXMgYnkgVGVtcG9yYWxVbml0IGVudW0gaW5zdGVhZCBvZiBpbnRlZ2VyIGluZGV4LgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6RXhhY3RUaW1lKTogQWRkIGFuIEV4YWN0VGltZSB0
eXBlIHRoYXQgd3JhcHMKKyAgICAgICAgICBhbiBJbnQxMjggYW5kIGNhbiBkbyB0aGUgYmFzaWMg
b3BlcmF0aW9ucy4gVGhpcyB0eXBlIGNhbiBiZSByZXVzZWQgaW4KKyAgICAgICAgICBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lLgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9j
aE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVw
b2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aFNlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmVwb2No
TWlsbGlzZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpl
cG9jaE1pY3Jvc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGlt
ZTo6ZXBvY2hOYW5vc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6bmFub3NlY29uZHNGcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OkV4YWN0VGltZTo6cHJpbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0
b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+PSBjb25z
dCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+IGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKTogQWRkIGEgbWluaW1hbAorICAgICAg
ICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYW5kbGVEYXRlVGltZVZhbHVlIGFic3RyYWN0IG9w
IGZyb20gdGhlCisgICAgICAgICAgVGVtcG9yYWwgc3BlY2lmaWNhdGlvbiwgb25seSBjb3Zlcmlu
ZyBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOiBVc2UgaXQgaW4gdGhlIGV4aXN0aW5nCisgICAgICAgICAgSW50bC5EYXRlVGltZUZvcm1h
dCBtZXRob2RzLgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6IEFkZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGFuIElu
dDEyOC4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6IFJlbW92ZSBkZWNsYXJhdGlvbiBm
b3Igbm9uZXhpc3RlbnQgdG9VaW50NjRIZWFwKCkuCisgICAgICAgICogcnVudGltZS9KU0RhdGVN
YXRoLmNwcDogTW92ZSB0aW1lVG9NUygpIGludG8gV1RGLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5zdGFudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbUR1cmF0aW9uTGlrZSk6
IEFjY2VzcyBEdXJhdGlvbiBwcm9wZXJ0aWVzIGluCisgICAgICAgICAgdGhlIG9yZGVyIGRlZmlu
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246
OnRvTGltaXRlZER1cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OndpdGggY29uc3QpOiBBY2Nlc3MgRHVyYXRpb24gcHJvcGVydGllcyBpbiB0aGUKKyAgICAg
ICAgICBvcmRlciBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OnRvSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25kcyk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMpOgorICAgICAgICAoSlND
OjpUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAg
ICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnN0YW50
Q29uc3RydWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Zm9ybWF0U2Vjb25kc1N0cmluZ1Bh
cnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YWJzKTogQWRkZWQgZm9yIGNsYXJpdHkuCisgICAg
ICAgIChKU0M6OnJvdW5kTnVtYmVyVG9JbmNyZW1lbnQpOiBBZGQgb3ZlcmxvYWQgZm9yIEludDEy
OC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6IEFkZCBhcnJheSBjb3JyZXNw
b25kaW5nIHRvIHRoZSB0YWJsZSBpbiB0aGUKKyAgICAgICAgICBzcGVjIHRleHQgc3BlY2lmeWlu
ZyBhbHBoYWJldGljYWwgYWNjZXNzIG9yZGVyIGZvciB1bml0IHByb3BlcnRpZXMuCisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTIz
ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBWYXJp
b3VzIHR3ZWFrcyBpbiBwcmVwYXJhdGlvbiBmb3IgVGVtcG9yYWwuSW5zdGFudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3Yzdj
NGU5Nzc5YTg5YjIzNDdkMjY0YWFkNjU3YzZjOGY2Y2ZhYjI3Li43OWFmMDdkZGY0YzUyYWY1ZTM4
NGFkODllNjQyMGM5Y2ZkYzlkOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA5LTIzICBQ
aGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9AZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAoV1RGOjp0
aW1lVG9NUyk6IE1vdmVkIGZyb20gSlNEYXRlTWF0aC5oLgorICAgICAgICAqIHd0Zi9JbnQxMjgu
aDoKKyAgICAgICAgKFdURjo6SW50MTI4SW1wbDo6SW50MTI4SW1wbCk6IEFkZCBhIGNvbnZlcnNp
b24gZnJvbSBJbnQxMjggdG8gVUludDEyOAorICAgICAgICAgIGFuZCB2aWNlIHZlcnNhLgorCiAy
MDIxLTA5LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgbW9yZSBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIHRvIFdlYkNvcmU6Omxpbmtl
ZE9uT3JBZnRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmZkMjBk
N2RlZjkyYjY0ZDE5NGE3NTRhZWQxZjFhY2JiOGJlOWE4Yy4uMDg5ZjY0Y2Y3ZDFjMWZmNDg3N2Uw
NzExNzAzYzMwMGY4NTU2ZDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTExLDYgKzExMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWNiY2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODky
YTZmMDhjNWRhNDBkNi4uMDE1ZTZhNDlkMGU4MzU5MTNiNDFiZDJlNTNjZmM1Y2ZlYTJiMWEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5NSw2ICsx
OTUsOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmx1dC5oIFwKICAg
ICBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIFwK
ICAgICBUZW1wb3JhbE5vdy5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAogICAg
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZTg2YmE4ZGMwYmI5Y2FiZjRiMTM0Y2IxMzI0ZDI0MTZmY2NmOWE3Li41
ODVjNzYyMzgyZTFmYjdmNTZmMDZlMTFiNTc5OGEzYmM4Nzk0NjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTk1Nyw2ICsxOTU3LDExIEBACiAJCUUzRkY3NTMzMUQ5Q0VBMTgw
MEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRH
ZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTEx
MkVGMjcyMjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUY2RDY3RDQwMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNB
MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAqLzsgfTsKKwkJRjZENjdENDIy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzQzI2RjkwMkU3MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRjZENjdENDQy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0UyNkY5MDJFODAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oICovOyB9OworCQlGNkQ2N0Q0NzI2Rjkx
MzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0Q0NTI2RjkxMzBBMDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUY2RDY3
RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0Q0NjI2Rjkx
MzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlG
NkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYxNTAyMDI2OTNENDUwMDA0
Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggKi87IH07CiAJCUZFMDQxNTUzMjUyRUMwNzMw
MDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNDE1NTIyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNp
dG9yTWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTky
RDZBMTExRkJENDkxRDAwMDI0NUY0IC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3BwICov
OyB9OwpAQCAtNTMyNSw2ICs1MzMwLDE0IEBACiAJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAv
KiBSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB9OwogCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg3MDI1NTU5N0Qw
MUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0pTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVtcG9yYWxJbnN0YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdE
M0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjZENjdEM0IyNkY5MDJFNjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZE
NjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0UyNkY5MDJFODAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdE
NDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdENDYyNkY5MTMwQjAw
NkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9y
YWxOb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxOb3cuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVGIC8q
IFRlbXBvcmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUw
MUEyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MDU2LDYgKzcwNjksOCBAQAogCQkJCTk5NkI3MzE0MUJEOUZBMkMwMDMzMUI4NCAv
KiBTeW1ib2xQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2
IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNjI2
REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLywKKwkJ
CQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
bHV0LmggKi8sCisJCQkJRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlGNkYxNTAyMDI2OTNENDUwMDA0Qjk4RUYgLyogVGVt
cG9yYWxPYmplY3QubHV0LmggKi8sCiAJCQkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdh
c21PcHMuaCAqLywKIAkJCQlBRDJGQ0MwQTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTgwMTQsNiArODAyOSwxMiBAQAog
CQkJCUEzQzdFREI0MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3IuaCAqLywKIAkJCQlBM0M3RURCNTI2QjBEQjM3MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTNDN0VEQjAyNkIwREIzNjAwNEMzNEM1IC8qIFRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCAqLywKKwkJCQlGNkQ2N0QzOTI2RjkwMkU1MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLywKKwkJCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmggKi8sCisJCQkJRjZENjdEM0IyNkY5MDJFNjAwNkUwMzQ5IC8q
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlGNkQ2N0QzQzI2RjkwMkU3
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLywKKwkJCQlGNkQ2N0Qz
RDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
Ki8sCiAJCQkJRjZGMTUwMUIyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmNwcCAqLywK
IAkJCQlGNkYxNTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuaCAqLywKIAkJCQlG
NkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuY3BwICovLApAQCAtOTYy
Niw3ICs5NjQ3LDYgQEAKIAkJCQk1REU2RTVCMzBFMTcyOEVDMDAxODA0MDcgLyogY3JlYXRlX2hh
c2hfdGFibGUgaW4gSGVhZGVycyAqLywKIAkJCQk1MzVDMjQ2MTFGNzg5MjhFMDA2RUM0MEUgLyog
Y3JlYXRlX3JlZ2V4X3RhYmxlcyBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlFOTJCMUJEMTdGQTQw
MDFBQTQxMyAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLywKLQkJCQlFMzg2RkQ3QjI2RTg2N0I4
MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkRGMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmll
dy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzMyLDcgKzk3NTIsNiBAQAogCQkJCUE3RDg5Q0Y4MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
REQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dl
bmVyYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJB
RDcgLyogREZHR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZBMThBNjAwNzAwMDFB
MjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3NSw3ICsx
MDI5NCw2IEBACiAJCQkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYzMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTM4NkZEN0YyNkU4
NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQz
MyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDczNiw3ICsxMDc1
NCwxNSBAQAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBE
QjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1
MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4
NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4NkZEN0YyNkU4NjdCODAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzBFOEE1
NjI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDg0NmU5ZWU3NWZlZDA1NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcuLjk4
NzdlYTE5ZmZkNzYwNzE1NTYxYTFjNjI5ZGE1ODFkYzEzMTRiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTEwMTcsNiArMTAxNyw5IEBAIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwCitydW50aW1lL1RlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuY3BwCmluZGV4IGU3MmJmNzI3N2IyMmYzNzY1Mjk2NGVmNDQzNjYxMGU5NjM0
MzFkOWMuLjQzOTQ1N2EyOTYyNzJmMzUxNmQwYWUxZWY4YzY2ZjE4ZWZkMDU2MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC04NzcsNiArODc3LDM3IEBA
IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5U
aW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lCiAgICAgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8RXhh
Y3RUaW1lPiBwYXJzZUluc3RhbnQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRlbXBvcmFsSW5zdGFudFN0cmluZwor
ICAgIC8vIFRlbXBvcmFsSW5zdGFudFN0cmluZyA6CisgICAgLy8gICAgIERhdGUgVGltZVpvbmVP
ZmZzZXRSZXF1aXJlZAorICAgIC8vICAgICBEYXRlIERhdGVUaW1lU2VwYXJhdG9yIFRpbWVTcGVj
IFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZU9mZnNldFJlcXVpcmVkCisgICAgLy8gVGltZVpvbmVP
ZmZzZXRSZXF1aXJlZCA6CisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0IFRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbl9vcHQKKworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNp
bmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHsK
KyAgICAgICAgYXV0byBkYXRldGltZSA9IHBhcnNlRGF0ZVRpbWUoYnVmZmVyKTsKKyAgICAgICAg
aWYgKCFkYXRldGltZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGF1dG8gW2RhdGUsIG1heWJlVGltZSwgbWF5YmVUaW1lWm9uZV0gPSBkYXRldGltZS52YWx1ZSgp
OworICAgICAgICBpZiAoIW1heWJlVGltZVpvbmUgfHwgKCFtYXliZVRpbWVab25lLT5tX3ogJiYg
IW1heWJlVGltZVpvbmUtPm1fb2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIC8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhciBhbm5vdGF0aW9uCisgICAgICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgICAgIFBsYWluVGltZSB0aW1lOworICAgICAgICBpZiAobWF5YmVUaW1lKQorICAgICAg
ICAgICAgdGltZSA9IG1heWJlVGltZS52YWx1ZSgpOworCisgICAgICAgIGludDY0X3Qgb2Zmc2V0
ID0gbWF5YmVUaW1lWm9uZS0+bV96ID8gMCA6ICptYXliZVRpbWVab25lLT5tX29mZnNldDsKKyAg
ICAgICAgcmV0dXJuIHtFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIo
KSwgZGF0ZS5tb250aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwg
dGltZS5zZWNvbmQoKSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRp
bWUubmFub3NlY29uZCgpLCBvZmZzZXQpfTsKKyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0dGltZXpvbmVvZmZzZXRz
dHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkK
IHsKQEAgLTk2OSw1ICsxMDAwLDkwIEBAIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0
aW9uJiBkdXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorRXhhY3RUaW1lIEV4YWN0VGlt
ZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24sIHVpbnQ4X3Qg
ZCwgdW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25lZCBtcywgdW5z
aWduZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpCit7CisgICAgQVNTRVJU
KHkgPj0gLTk5OTk5OSAmJiB5IDw9IDk5OTk5OSk7CisgICAgQVNTRVJUKG1vbiA+PSAxICYmIG1v
biA8PSAxMik7CisgICAgQVNTRVJUKGQgPj0gMSAmJiBkIDw9IDMxKTsKKyAgICBBU1NFUlQoaCA+
PSAwICYmIGggPD0gMjMpOworICAgIEFTU0VSVChtaW4gPj0gMCAmJiBtaW4gPD0gNTkpOworICAg
IEFTU0VSVChzID49IDAgJiYgcyA8PSA1OSk7CisgICAgQVNTRVJUKG1zID49IDAgJiYgbXMgPD0g
OTk5KTsKKyAgICBBU1NFUlQobWljcm9zID49IDAgJiYgbWljcm9zIDw9IDk5OSk7CisgICAgQVNT
RVJUKG5zID49IDAgJiYgbnMgPD0gOTk5KTsKKworICAgIGRvdWJsZSBkYXRlRGF5cyA9IGRhdGVU
b0RheXNGcm9tMTk3MCh5LCBtb24gLSAxLCBkKTsKKyAgICBkb3VibGUgdGltZU1zID0gdGltZVRv
TVMoaCwgbWluLCBzLCBtcyk7CisgICAgZG91YmxlIHV0Y01zID0gKGRhdGVEYXlzICogbXNQZXJE
YXkgKyB0aW1lTXMpOworICAgIEludDEyOCB1dGNOcyA9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50
NjRfdD4odXRjTXMpfSAqIDEnMDAwJzAwMCArIG1pY3JvcyAqIDEwMDAgKyBuczsKKyAgICByZXR1
cm4gRXhhY3RUaW1lIHt1dGNOcyAtIG9mZnNldH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RU
aW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOwor
ICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlz
KCkpOworCisgICAgSW50MTI4IHJlc3VsdE5zIHttX2Vwb2NoTmFub3NlY29uZHN9OworCisgICAg
Ly8gVGhlIGR1cmF0aW9uJ3MgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBtaWxsaXNlY29u
ZHMgc2hvdWxkIGJlCisgICAgLy8gYWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1iaXQgaW50LiAy
KjFlOCAyNC1ob3VyIGRheXMgaXMgdGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNwYW4gZm9yIGV4
YWN0IHRpbWUsIHNvIGlmIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlvbiBleGNlZWRz
CisgICAgLy8gdGhhdCwgdGhlbiB3ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBpZiAoZmFicyhkdXJh
dGlvbi5ob3VycygpKSA+IDQ4MDAwMDAwMDApCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5o
b3VycygpKX0gKiBFeGFjdFRpbWU6Om5zUGVySG91cjsKKyAgICBpZiAoZmFicyhkdXJhdGlvbi5t
aW51dGVzKCkpID4gMjg4MDAwMDAwMDAwKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJlc3VsdE5zICs9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubWlu
dXRlcygpKX0gKiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIGlmIChmYWJzKGR1cmF0aW9u
LnNlY29uZHMoKSkgPiAxLjcyOGUrMTMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5zZWNv
bmRzKCkpfSAqIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgaWYgKGZhYnMoZHVyYXRpb24u
bWlsbGlzZWNvbmRzKCkpID4gMS43MjhlKzE2KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJlc3VsdE5zICs9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24u
bWlsbGlzZWNvbmRzKCkpfSAqIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZDsKKyAgICAvLyBG
SVhNRTogcHJlY2lzaW9uLiBjaGVjayBpZiB0aGVyZSBpcyBzdWNoIGEgdGhpbmcgYXMgY2hlY2tl
ZCBpbnRlZ2VyCisgICAgLy8gYXJpdGhtZXRpYyBpbiBXVEYKKyAgICByZXN1bHROcyArPSBJbnQx
Mjgge3N0YXRpY19jYXN0PGludDY0X3Q+KGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpKX0gKiBFeGFj
dFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNf
Y2FzdDxpbnQ2NF90PihkdXJhdGlvbi5uYW5vc2Vjb25kcygpKX07CisKKyAgICBFeGFjdFRpbWUg
cmVzdWx0IHtyZXN1bHROc307CisgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7cmVzdWx0fTsKK30KKworSW50MTI4IEV4
YWN0VGltZTo6cm91bmQoSW50MTI4IHF1YW50aXR5LCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBv
cmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIEludDEyOCBp
bmNyZW1lbnROcyB7aW5jcmVtZW50fTsKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6SG91cjogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1BlckhvdXI7IGJy
ZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IGluY3JlbWVudE5zICo9IEV4YWN0
VGltZTo6bnNQZXJNaW51dGU7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6
IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7IGJyZWFrOworICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Bl
ck1pbGxpc2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6
IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZDsgYnJlYWs7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gcm91bmROdW1iZXJU
b0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50TnMsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8v
IERpZmZlcmVuY2VJbnN0YW50ICggbnMxLCBuczIsIHJvdW5kaW5nSW5jcmVtZW50LCBzbWFsbGVz
dFVuaXQsIHJvdW5kaW5nTW9kZSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC1kaWZmZXJlbmNlaW5zdGFudAorSW50MTI4IEV4YWN0VGltZTo6ZGlm
ZmVyZW5jZShFeGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgSW50MTI4IGRp
ZmYgPSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHMgLSBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAg
cmV0dXJuIHJvdW5kKGRpZmYsIGluY3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2RlKTsKK30KKwor
RXhhY3RUaW1lIEV4YWN0VGltZTo6cm91bmQodW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVu
aXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
RXhhY3RUaW1lIHtyb3VuZChtX2Vwb2NoTmFub3NlY29uZHMsIGluY3JlbWVudCwgdW5pdCwgcm91
bmRpbmdNb2RlKX07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGRhMzczNDEx
MzZjYTI1YjM0OWYyNGVhZTc2Zjk1ODI0YjMyZjkxNzEuLjA1MWFlNTliOGE0MGNhNDI5NTRmOTdi
OTNjMzgyZDlkZDAyOTI2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CkBAIC02MSw2ICs2Miw4IEBAIHB1YmxpYzoKIAog
ICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ldOyB9CiAg
ICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFbaV07IH0KKyAgICBkb3VibGUmIG9wZXJhdG9yW10oVGVtcG9yYWxVbml0IHUpIHsgcmV0dXJu
IG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90Pih1KV07IH0KKyAgICBjb25zdCBkb3VibGUmIG9w
ZXJhdG9yW10oVGVtcG9yYWxVbml0IHUpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVtzdGF0aWNfY2Fz
dDx1aW50OF90Pih1KV07IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmVuZCgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7
IH0KQEAgLTc3LDYgKzgwLDEyMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCBu
dW1iZXJPZlRlbXBvcmFsVW5pdHM+IG1fZGF0YSB7IH07CiB9OwogCitjbGFzcyBFeGFjdFRpbWUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEV4YWN0VGltZSk7CitwdWJsaWM6CisgICAg
Y29uc3RleHByIEV4YWN0VGltZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQg
RXhhY3RUaW1lKEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKSA6IG1fZXBvY2hOYW5vc2Vjb25kcyhl
cG9jaE5hbm9zZWNvbmRzKSB7IH0KKyAgICBjb25zdGV4cHIgRXhhY3RUaW1lKGNvbnN0IEV4YWN0
VGltZSYgb3RoZXIpIDogbV9lcG9jaE5hbm9zZWNvbmRzKG90aGVyLm1fZXBvY2hOYW5vc2Vjb25k
cykgeyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBvY2hTZWNvbmRz
KGludDY0X3QgZXBvY2hTZWNvbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJ
bnQxMjgge2Vwb2NoU2Vjb25kc30gKiBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGludDY0
X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhhY3RUaW1lKElu
dDEyOCB7ZXBvY2hNaWxsaXNlY29uZHN9ICogRXhhY3RUaW1lOjpuc1Blck1pbGxpc2Vjb25kKTsK
KyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWljcm9zZWNv
bmRzKGludDY0X3QgZXBvY2hNaWNyb3NlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhh
Y3RUaW1lKEludDEyOCB7ZXBvY2hNaWNyb3NlY29uZHN9ICogRXhhY3RUaW1lOjpuc1Blck1pY3Jv
c2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIEV4YWN0VGltZSBmcm9tSVNPUGFydHNBbmRPZmZz
ZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25l
ZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVk
IG5zLCBpbnQ2NF90IG9mZnNldCk7CisKKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaFNlY29u
ZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6
Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgY29uc3RleHByIGludDY0X3QgZXBvY2hNaWxsaXNl
Y29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRp
bWU6Om5zUGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9j
aE1pY3Jvc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAv
IEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhwciBJbnQx
MjggZXBvY2hOYW5vc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBj
b25zdGV4cHIgaW50IG5hbm9zZWNvbmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpu
c1BlclNlY29uZCk7CisgICAgfQorCisgICAgU3RyaW5nIHByaW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vj
b25kcyA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAg
ICBwcmludEltcGwoYnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcHJpbnRJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxp
ZEVwb2NoTmFub3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vj
b25kcworICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBv
Y2hOYW5vc2Vjb25kcyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwor
ICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9l
cG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4
YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3Nl
Y29uZHMgPT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2Vwb2NoTmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAg
IH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9j
aE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RU
aW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25k
cyA+IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFs
PEV4YWN0VGltZT4gYWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShF
eGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpIGNvbnN0OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRl
bXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEludDEyOCBkYXlSYW5nZVNlY29uZHMgezg2NDAwJzAwMDAwMDAwfTsgLy8gMWU4
IGRheXMKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1pY3Jvc2Vjb25kIHsxMDAw
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1pbGxpc2Vjb25kIHsxJzAwMCcw
MDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsxJzAwMCcwMDAn
MDAwfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1pbnV0ZSA9IG5zUGVyU2Vj
b25kICogNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJIb3VyID0gbnNQZXJN
aW51dGUgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBtaW5WYWx1ZSA9IC1kYXlS
YW5nZVNlY29uZHMgKiBuc1BlclNlY29uZDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBt
YXhWYWx1ZSA9IGRheVJhbmdlU2Vjb25kcyAqIG5zUGVyU2Vjb25kOworCisgICAgc3RhdGljIHZv
aWQgcHJpbnRJbXBsKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEludDEyOCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIGlmICh2YWx1ZSA+IDkpCisgICAgICAgICAgICBwcmludEltcGwoYnVpbGRlciwg
dmFsdWUgLyAxMCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2YWx1ZSAlIDEwKSArICcwJyk7CisgICAgfQorCisgICAgc3RhdGljIEludDEyOCByb3VuZChJ
bnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpOworCisgICAgSW50MTI4IG1fZXBvY2hOYW5vc2Vjb25kcyB7IH07Cit9OworCiBjbGFz
cyBQbGFpblRpbWUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFBsYWluVGltZSk7CiBw
dWJsaWM6CkBAIC0xNjYsNSArMjg1LDcgQEAgU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBs
YWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24KIAogYm9v
bCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mKTsKIAorc3RkOjpvcHRpb25hbDxFeGFj
dFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdWaWV3KTsKKwogfSAvLyBuYW1lc3BhY2UgSVNPODYw
MQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDQ2MDQzYmJmMDIyOThkYzU2MWE4MzYyZGEz
ZjM0ZWMzOWQxMDEzMzguLmMzOWJjNjllYjliYmM4MDVkZGZkOGIyNjk0NjhkNGY0MWRiYjNhNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5oCkBAIC05NSw2ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBVRGF0ZUludGVydmFsRm9y
bWF0KiBjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeShKU0dsb2JhbE9iamVjdCop
OwogCisgICAgc3RhdGljIGRvdWJsZSBoYW5kbGVEYXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKICAgICBlbnVtIGNsYXNzIFdlZWtkYXkgOiB1aW50OF90IHsgTm9uZSwg
TmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgRXJhIDogdWludDhfdCB7IE5v
bmUsIE5hcnJvdywgU2hvcnQsIExvbmcgfTsKICAgICBlbnVtIGNsYXNzIFllYXIgOiB1aW50OF90
IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDc1ODRjZjBjZmIxMjllYmNmOGFiZjQ1M2YzZWJlYWY0Yjk3MWNmM2IuLjc4Yzg1YmVjN2Iw
YWE1MzVmNTQxZTNiZjU0Yjk5MjdiNzlhZWNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdElubGluZXMu
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTAsNiArOTEsMjcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAor
Ly8gSGFuZGxlRGF0ZVRpbWVWYWx1ZSAoIGRhdGVUaW1lRm9ybWF0LCB4ICkKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWhhbmRsZWRhdGV0aW1ldmFs
dWUKK2RvdWJsZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB4KQoreworICAgIGlmICh4LmlzVW5kZWZp
bmVkKCkpCisgICAgICAgIHJldHVybiBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICAvLyBGSVhNRToK
KyAgICAvLyAgLSBBZGQgYWxsIG9mIHRoZSBvdGhlciBUZW1wb3JhbCB0eXBlcworICAgIC8vICAt
IFdvcmsgaW4gZXBvY2ggbmFub3NlY29uZHMKKyAgICAvLyAgLSBSZXR1cm4gVURhdGVGb3JtYXQg
YW5kIFVEYXRlSW50ZXJ2YWxGb3JtYXQgZGVwZW5kaW5nIG9uIHRoZSB0eXBlCisgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
eCk7CisgICAgaWYgKGluc3RhbnQpCisgICAgICAgIHJldHVybiBpbnN0YW50LT5leGFjdFRpbWUo
KS5lcG9jaE1pbGxpc2Vjb25kcygpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgV1RGOjp0aW1lQ2xpcCh4
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpKTsKK30KKwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xMDAsMTQgKzEyMiw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2JhbE9iamVj
dCoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChk
YXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUpKSk7CiB9CkBAIC0xNTYsMTQgKzE3Miw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xv
YmFsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFs
dWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVO
b3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFs
dWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAg
ICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRp
bWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KQEAgLTE4
NSw5ICsxOTUsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYgogICAgIGlmIChzdGFydERhdGVW
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRl
IG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBz
dGFydERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERh
dGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0
LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICBkb3VibGUgZW5kRGF0ZSA9IGVuZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgIGRvdWJsZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGlt
ZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBp
cyBsYXJnZXIgdGhhbiBlbmREYXRlIl9zKTsKQEAgLTIxMiw5ICsyMjIsOSBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdl
VG9QYXJ0cywgKEpTRwogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVu
ZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVk
Il9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBzdGFydERhdGVWYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBkb3VibGUgZW5kRGF0ZSA9IGVu
ZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBlbmREYXRlID0g
SW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5k
RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlm
IChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhhbiBlbmREYXRlIl9z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAxNzRi
MGY4YWU3ZmVkYmIzMjQzZjQ0YWVkZTU0MzBjYmYyZjI0MWIyLi40YjU5NmMyN2E2YjM0YTIxYjk5
NDk3YzE0NzlmY2Y3NjhkNTA4MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5j
bHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMjMxLDYgKzIzMiw2MiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRfdCB2YWx1ZSkKICAgICBy
ZXR1cm4gY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZFZhbHVlLCBzaWduKTsK
IH0KIAorSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEludDEyOCB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVaZXJvKGds
b2JhbE9iamVjdCkpOworCisgICAgVUludDEyOCB1bnNpZ25lZFZhbHVlOworICAgIGJvb2wgc2ln
biA9IGZhbHNlOworICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9
IHN0YXRpY19jYXN0PFVJbnQxMjg+KC0odmFsdWUgKyAxKSkgKyAxOworICAgICAgICBzaWduID0g
dHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9IHZhbHVlOworCisgICAg
aWYgKHVuc2lnbmVkVmFsdWUgPD0gVUlOVDY0X01BWCkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBjcmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih1bnNpZ25lZFZhbHVlKSwgc2lnbikpOworCisgICAgaWYgY29uc3RleHByIChzaXplb2Yo
RGlnaXQpID09IDgpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5n
dGgoZ2xvYmFsT2JqZWN0LCAyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSkpOworICAgICAgICBEaWdpdCBoaWdo
Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworCisgICAgICAgIEFTU0VSVChoaWdoQml0cyk7CisKKyAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBsb3dCaXRzKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgxLCBo
aWdoQml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICB9CisKKyAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9PSA0KTsKKworICAg
IERpZ2l0IGRpZ2l0MCA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dW5zaWduZWRWYWx1ZSkpOworICAgIERpZ2l0IGRpZ2l0MSA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiAzMikpOworICAgIERpZ2l0IGRp
Z2l0MiA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworICAgIERpZ2l0IGRpZ2l0MyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0
aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiA5NikpOworCisgICAgQVNTRVJUKGRp
Z2l0MiB8fCBkaWdpdDMpOworCisgICAgaW50IGxlbmd0aCA9IGRpZ2l0MyA/IDQgOiAzOworICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgbGVuZ3Ro
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGJpZ0lu
dC0+c2V0RGlnaXQoMCwgZGlnaXQwKTsKKyAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGRpZ2l0MSk7
CisgICAgYmlnSW50LT5zZXREaWdpdCgyLCBkaWdpdDIpOworICAgIGlmIChkaWdpdDMpCisgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMywgZGlnaXQzKTsKKyAgICBiaWdJbnQtPnNldFNpZ24oc2ln
bik7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVG
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3OC4u
ODhmM2MzOTAzOTkxMjJlMjM3YWUyYTE4NjExNjMzYjZkYTY3OTRjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2Vk
VW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCB2
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9t
KEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCB2YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgdmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShK
U0dsb2JhbE9iamVjdCosIEludDEyOCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKTsKIApAQCAtNjA1LDgg
KzYwNyw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDY0
X3QgdG9CaWdVSW50NjRIZWFwKEpTQmlnSW50Kik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VaW50NjRIZWFwKEpTQmlnSW50Kik7Ci0K
ICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZzZXRPZkRhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JpZ0ludCwgbV9kYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZGFlOWIzYTliYzkyZmJhZmQ0
ZTMwMTk0YjRkMWE4ZDgzZGJkMmNmZi4uNTIxOWY4ZjcyNDJiODZmOTQwZTgyODIzNTg0ZTYxZmUy
YmE0OWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5j
cHAKQEAgLTI2OSwxMSArMjY5LDYgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVDYWNoZTo6bG9jYWxU
aW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gsIFdURjo6VGkKICAgICByZXR1
cm4gb2Zmc2V0OwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91
ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQotewotICAgIHJldHVybiAoKCho
b3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUg
KyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKLX0KLQogZG91YmxlIERhdGVDYWNoZTo6
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3VibGUg
bWlsbGlzZWNvbmRzLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CiAgICAgZG91Ymxl
IGRheSA9IGRhdGVUb0RheXNGcm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgpLCB0Lm1vbnRoRGF5
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDA2ZjY1M2VjYmY4NGIzNzhhN2IzY2FlYWQyNDM0Njk4ODk1MjdmMjAuLmI1NTU1
OTU1ODc1MzQ3NjFkYzJhMzdhODdhMjVjNDFiNjI1MDllZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNSw2ICsyMDUsOCBA
QAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgpA
QCAtMTIzNCw2ICsxMjM2LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAg
ICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisg
ICAgICAgIG1faW5zdGFudFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQ
cm90b3R5cGUgPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBp
bml0LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIGluc3RhbnRQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1f
cGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0
aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTI4LDYg
KzIxMzcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbnN0YW50U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2ODBlOWRmNjE4OTIuLmVkNWM1
ZjhkMjkzNzJlOWM3MmYzZTFmNTJiZWUxYzMxZmZhYTQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIHB1
YmxpYzoKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2Nh
bGVuZGFyU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2luc3RhbnRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCkBA
IC04NzcsNiArODc4LDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4g
bV9pbnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGxhaW5UaW1l
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggZmI2MDc0Y2I4NTg0ZjljYzgwYWFiN2UyYjQx
MWFmNjBkMmIxZjBkNi4uMDA5OWUyZWY5ZDYwZjA0OTIyYTdkNjQ4ODYyMDJkNmY1YmJiNDRiOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTg4LDIwICs4OSwyMCBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0
aW9uOjpmcm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAg
SVNPODYwMTo6RHVyYXRpb24gcmVzdWx0OwogICAgIGF1dG8gaGFzUmVsZXZhbnRQcm9wZXJ0eSA9
IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRz
OyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0KGdsb2Jh
bE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCBzdGF0aWNfY2FzdDxUZW1wb3Jh
bFVuaXQ+KGkpKSk7CisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IHRlbXBvcmFsVW5pdHNJ
blRhYmxlT3JkZXIpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0
KGdsb2JhbE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCB1bml0KSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdFtpXSA9IDA7CisgICAgICAgICAg
ICByZXN1bHRbdW5pdF0gPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAog
ICAgICAgICBoYXNSZWxldmFudFByb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0W2ldID0g
dmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmVzdWx0W3VuaXRdID0gdmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgICAgICBpZiAoIWlzSW50ZWdlcihyZXN1bHRbaV0pKSB7CisgICAg
ICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0XSkpIHsKICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGll
cyBtdXN0IGJlIGludGVnZXJzIl9zKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KQEAgLTE2NCw2ICsxNjUsMzEgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlv
bjo6dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICByZXR1
cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3Ry
dWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKKy8vIFRvTGltaXRlZFRlbXBvcmFsRHVy
YXRpb24gKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgZGlzYWxsb3dlZEZpZWxkcyApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b2xpbWl0ZWR0ZW1w
b3JhbGR1cmF0aW9uCitjb25zdCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjp0
b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0
ZW1WYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVu
aXRzKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJh
dGlvbiA9IHRvSVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFpc1ZhbGlkRHVyYXRp
b24oZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2Yg
Y29uc2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBm
b3IgKFRlbXBvcmFsVW5pdCB1bml0IDogZGlzYWxsb3dlZFVuaXRzKSB7CisgICAgICAgIGlmIChk
dXJhdGlvblt1bml0XSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIG1ha2VTdHJpbmcoIkFkZGluZyAiX3MsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFt
ZSh2bSwgdW5pdCkucHVibGljTmFtZSgpLCAicyBub3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLklu
c3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247
Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjMwLDIwICsyNTYsMjAgQEAgSVNPODYwMTo6RHVyYXRp
b24gVGVtcG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCoKIAogICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGhhc1Jl
bGV2YW50UHJvcGVydHkgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mVGVtcG9yYWxVbml0czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlv
bkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwgc3Rh
dGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpKSkpOworICAgIGZvciAoVGVtcG9yYWxVbml0IHVuaXQg
OiB0ZW1wb3JhbFVuaXRzSW5UYWJsZU9yZGVyKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBk
dXJhdGlvbkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2
bSwgdW5pdCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0g
PSBtX2R1cmF0aW9uW2ldOworICAgICAgICAgICAgcmVzdWx0W3VuaXRdID0gbV9kdXJhdGlvblt1
bml0XTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaGFzUmVs
ZXZhbnRQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdFtpXSA9IHZhbHVlLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJlc3VsdFt1bml0XSA9IHZhbHVlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
LSAgICAgICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W2ldKSkgeworICAgICAgICBpZiAoIWlzSW50
ZWdlcihyZXN1bHRbdW5pdF0pKSB7CiAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBpbnRl
Z2VycyJfcyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggODJmMmQ1
ZDY1YzIyYWM0YzQwN2M4NjM0MzQyZmY2NjljYTBhMTg5Ni4uZWJlMjczMmEzNWZjYmIzZjg3YWU4
ODEzZTcwYWUzZGI5ODQ4NTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb24uaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgREVD
TEFSRV9JTkZPOwogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIHRvVGVtcG9yYWxEdXJh
dGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBjb25zdCBJU084NjAx
OjpEdXJhdGlvbiB0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiAgICAg
c3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
ICAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNzE3YWZiNDMzYzQ5MzVmNzU2ZDM1YTRmNTdkN2EzZTAz
NmExNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnQuY3BwCkBAIC0wLDAgKzEsNDI0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAi
SVNPODYwMS5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50OjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRl
bXBvcmFsSW5zdGFudCkgfTsKKworU3RydWN0dXJlKiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworVGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhhY3RUaW1lKGV4YWN0VGltZSkKK3sKK30K
Kwordm9pZCBUZW1wb3JhbEluc3RhbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKK30KKworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1l
KQoreworICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnQ+KHZtLmhlYXApKSBU
ZW1wb3JhbEluc3RhbnQodm0sIHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCisvLyBDcmVhdGVUZW1w
b3JhbEluc3RhbnQgKCBlcG9jaE5hbm9zZWNvbmRzIFsgLCBuZXdUYXJnZXQgXSApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3Jh
bGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElTTzg2MDE6OkV4YWN0VGlt
ZSBleGFjdFRpbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZXhhY3RUaW1lLnByaW50KCksICIg
ZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBv
cmFsLkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
cmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5p
bnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTmFub3NlY29uZHMgPSB2YWx1ZS50b0JpZ0ludChn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTmFub3NlY29uZHMpOworICAg
IEludDEyOCBsb3cge2JpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDB9
OworICAgIEludDEyOCBoaWdoIHtiaWdpbnQtPmxlbmd0aCgpID4gMSA/IGJpZ2ludC0+ZGlnaXQo
MSkgOiAwfTsKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsoaGlnaCA8PCA2NCB8
IGxvdykgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6IDEpfTsKKworICAgIGlmIChiaWdpbnQtPmxl
bmd0aCgpID4gMiB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgYXJn
QXNTdHJpbmcge2JpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCl9OworICAgICAgICBp
ZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2ggbmFub3Nl
Y29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0
YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBj
cmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0
cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1RlbXBvcmFsSW5zdGFudCAoIGl0ZW0g
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90
ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0b0luc3Rh
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJ
bnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRl
bVZhbHVlKTsKKworICAgIC8vIFRPRE86IHdoZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5k
cworICAgIC8vIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2
bSkpCisgICAgLy8gICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+
KGl0ZW1WYWx1ZSktPmVwb2NoVGltZSgpKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworICAgIGF1dG8gcGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFy
c2VJbnN0YW50KHN0cmluZyk7CisgICAgaWYgKCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVs
bGlwc2l6ZUF0KDEwMCwgc3RyaW5nKSwgIicgaXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFu
dCBzdHJpbmciX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0
dXJuIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBwYXJzZWRFeGFjdFRpbWUudmFsdWUo
KSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tCitUZW1w
b3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsSW5zdGFudD4odm0p
KSB7CisgICAgICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4oaXRlbVZhbHVlKS0+bV9leGFjdFRpbWU7CisgICAgICAgIHJldHVybiBUZW1w
b3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCks
IGV4YWN0VGltZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3Qs
IGl0ZW1WYWx1ZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAo
IGVwb2NoU2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgZXBvY2hTZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGRvdWJsZSBlcG9jaFNlY29uZHMgPSBlcG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisg
ICAgLy8gTnVtYmVyVG9CaWdJbnQgc3RlcCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNv
bmRzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFr
ZVN0cmluZyhlcG9jaFNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2Yg
ZXBvY2ggc2Vjb25kcyJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKGVwb2NoU2Vjb25kcyk7CisgICAgcmV0dXJuIHRyeUNyZWF0ZUlmVmFsaWQo
Z2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaE1pbGxpc2Vjb25kcyAoIGVwb2NoTWlsbGlzZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2NobWlsbGlz
ZWNvbmRzCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlz
ZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hNaWxsaXNl
Y29uZHNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIGVwb2NoTWls
bGlzZWNvbmRzID0gZXBvY2hNaWxsaXNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVt
YmVyVG9CaWdJbnQgc3RlcCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hNaWxsaXNlY29uZHMp
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3Ry
aW5nKGVwb2NoTWlsbGlzZWNvbmRzLCAiIGlzIG5vdCBhIHZhbGlkIGludGVnZXIgbnVtYmVyIG9m
IGVwb2NoIG1pbGxpc2Vjb25kcyJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhhY3RUaW1l
Ojpmcm9tRXBvY2hNaWxsaXNlY29uZHMoZXBvY2hNaWxsaXNlY29uZHMpOworICAgIHJldHVybiB0
cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9y
YWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyApCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50
LmZyb21lcG9jaG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGVwb2NoTWljcm9zZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRvQmln
SW50KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9zZWNv
bmRzKTsKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhhY3RU
aW1lOjpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNCaWdJbnQ6OnRvQmlnVUludDY0KGJpZ2ludCkp
OworICAgIGlmIChiaWdpbnQtPmxlbmd0aCgpID4gMSB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkg
eworICAgICAgICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9i
amVjdCwgMTApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUg
Z2l2ZW4gbnVtYmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0
cmluZyksICIgZXBvY2ggbWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdl
IGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVy
ZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzICggZXBvY2hOYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG5hbm9zZWNvbmRzCitUZW1w
b3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzVmFsdWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ5
Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGVwb2NoTmFub3NlY29uZHNWYWx1ZSkpOworfQor
CisvLyBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUgKCBvbmUsIHR3byApCisvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmNvbXBhcmUKK0pT
VmFsdWUgVGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgb25lVmFsdWUsIEpTVmFsdWUgdHdvVmFsdWUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb25lID0gdG9JbnN0YW50KGdsb2JhbE9iamVj
dCwgb25lVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBUZW1wb3JhbEluc3RhbnQqIHR3byA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIHR3b1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9uZS0+
ZXhhY3RUaW1lKCkgPiB0d28tPmV4YWN0VGltZSgpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIo
MSk7CisgICAgaWYgKG9uZS0+ZXhhY3RUaW1lKCkgPCB0d28tPmV4YWN0VGltZSgpKQorICAgICAg
ICByZXR1cm4ganNOdW1iZXIoLTEpOworICAgIHJldHVybiBqc051bWJlcigwKTsKK30KKworY29u
c3QgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFsSW5zdGFudCogb3RoZXIsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFs
bGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBz
bWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQp
OworCisgICAgVGVtcG9yYWxVbml0IGRlZmF1bHRMYXJnZXN0VW5pdCA9IHN0ZDo6bWluKHNtYWxs
ZXN0VW5pdCwgVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBv
cmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0sIGRlZmF1bHRMYXJnZXN0
VW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3Jh
bFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRMYXJnZXN0VW5pdCk7
CisKKyAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8IGxhcmdlc3QpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVu
aXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJv
dW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbWF4SW5jcmVtZW50ID0gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0
VW5pdCk7CisgICAgQVNTRVJUKG1heEluY3JlbWVudCAmJiAqbWF4SW5jcmVtZW50IDw9IDEwMDAp
OyAvLyB1bmJvdW5kZWQgaW5jcmVtZW50cyBhcmUgaW1wb3NzaWJsZSB3aXRoIFRlbXBvcmFsLklu
c3RhbnQKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4SW5jcmVtZW50LCBmYWxzZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludDEyOCByb3VuZGVkRGlmZiA9IG1f
ZXhhY3RUaW1lLmRpZmZlcmVuY2Uob3RoZXItPm1fZXhhY3RUaW1lLCBpbmNyZW1lbnQsIHNtYWxs
ZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICAvLyBOT1RFOiBEdXJhdGlvbiBmaWVsZHMgYXJl
IGN1cnJlbnRseSBkb3VibGVzLCBhbmQgdGhlIHRvdGFsIG51bWJlciBvZgorICAgIC8vIG5hbm9z
ZWNvbmRzIG1heSBub3QgZml0IGluIGEgZG91YmxlLiBUaGlzIG1heSBuZWVkIHRvIGNoYW5nZSBp
ZiB0aGUKKyAgICAvLyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBEdXJhdGlvbiBjaGFuZ2Vz
LgorICAgIEFTU0VSVChyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcwMDAgPCBJTlQ2NF9NQVgpOwor
ICAgIGRvdWJsZSBzZWNvbmRzIHtzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0
X3Q+KHJvdW5kZWREaWZmIC8gMScwMDAnMDAwJzAwMCkpfTsKKyAgICBkb3VibGUgbmFub3NlY29u
ZHNSZW1haW5kZXIge3N0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91
bmRlZERpZmYgJSAxJzAwMCcwMDAnMDAwKSl9OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3Vs
dCB7MCwgMCwgMCwgMCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5kZXJ9
OworCisgICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgZG91YmxlIG1heGltdW1JbmNyZW1lbnQo
VGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCkKK3sKKyAgICBzd2l0Y2ggKHNtYWxsZXN0VW5pdCkg
eworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiByZXR1cm4gMjQ7CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6Ok1pbnV0ZTogcmV0dXJuIDE0NDA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNl
Y29uZDogcmV0dXJuIDg2NDAwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDog
cmV0dXJuIDguNjRlNzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHJldHVy
biA4LjY0ZTEwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiByZXR1cm4gOC42
NGUxMzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6WWVhcjoKKyAgICBjYXNlIFRlbXBvcmFsVW5p
dDo6TW9udGg6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OldlZWs6CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkRheToKKyAgICBkZWZhdWx0OgorICAgICAgICB7IH0KKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgSVNPODYwMTo6RXhhY3RUaW1lIFRl
bXBvcmFsSW5zdGFudDo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2Jq
ZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7
IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpX
ZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0
IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlbXBvcmFsVW5p
dCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNv
bmQpOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdN
b2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGluY3JlbWVu
dCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhp
bXVtSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIHRydWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gbV9leGFjdFRpbWUucm91bmQoaW5jcmVtZW50
LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLnRvU3RyaW5nKCBbIG9wdGlvbnMgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LnByb3RvdHlwZS50b3N0cmluZwor
U3RyaW5nIFRlbXBvcmFsSW5zdGFudDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiB0b1N0cmluZygpOworCisgICAg
SlNPYmplY3QqIHRpbWVab25lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHRpbWVab25lVmFsdWUg
PSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9uZSk7
CisgICAgaWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGltZVpv
bmUgPSBUZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9iamVjdCwgdGltZVpvbmVWYWx1ZSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAg
UHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBS
b3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0byBtYWtlIGEgbmV3IG9iamVjdCBp
ZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgorICAgIGlmIChzdGQ6OmdldDwwPihk
YXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3Vu
ZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcodGltZVpvbmUpOworCisg
ICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7bV9leGFjdFRpbWUucm91bmQoZGF0
YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlKX07CisKKyAgICAvLyBGSVhNRTog
TWlzc2luZywgcmVsaWVzIG9uIFRpbWVab25lOgorICAgIC8vIDEuIExldCByb3VuZGVkSW5zdGFu
dCBiZSAhIENyZWF0ZVRlbXBvcmFsSW5zdGFudChyb3VuZGVkTnMpLgorICAgIC8vIC4uLgorICAg
IC8vIDEuIElmIF9vdXRwdXRUaW1lWm9uZV8gaXMgKnVuZGVmaW5lZCosIHRoZW4KKyAgICAvLyAg
IDEuIFNldCBfb3V0cHV0VGltZVpvbmVfIHRvICEgQ3JlYXRlVGVtcG9yYWxUaW1lWm9uZSgqIlVU
QyIqKS4KKyAgICAvLyAxLiBMZXQgX2lzb0NhbGVuZGFyXyBiZSAhIEdldElTTzg2MDFDYWxlbmRh
cigpLgorICAgIC8vIDEuIExldCBfZGF0ZVRpbWVfIGJlID8gQnVpbHRpblRpbWVab25lR2V0UGxh
aW5EYXRlVGltZUZvcihfb3V0cHV0VGltZVpvbmVfLCBfaW5zdGFudF8sIF9pc29DYWxlbmRhcl8p
LgorICAgIEpTT2JqZWN0KiBvdXRwdXRUaW1lWm9uZSA9IHRpbWVab25lOworICAgIGlmIChvdXRw
dXRUaW1lWm9uZSkgeworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZJWE1FOiBUZW1wb3JhbC5JbnN0YW50LnRvU3RyaW5nKHt0aW1lWm9uZX0pIG5vdCBpbXBsZW1l
bnRlZCB5ZXQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiB0
b1N0cmluZyhuZXdFeGFjdFRpbWUsIHRpbWVab25lLCBkYXRhKTsKK30KKworLy8gVGVtcG9yYWxJ
bnN0YW50VG9TdHJpbmcgKCBpbnN0YW50LCB0aW1lWm9uZSwgcHJlY2lzaW9uICkKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsaW5zdGFu
dHRvc3RyaW5nCitTdHJpbmcgVGVtcG9yYWxJbnN0YW50Ojp0b1N0cmluZyhjb25zdCBJU084NjAx
OjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBKU09iamVjdCogdGltZVpvbmUsIFByZWNpc2lvbkRhdGEg
cHJlY2lzaW9uKQoreworICAgIEdyZWdvcmlhbkRhdGVUaW1lIGdyZWdvcmlhbkRhdGVUaW1lIHtz
dGF0aWNfY2FzdDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxpc2Vjb25kcygpKSwgTG9jYWxU
aW1lT2Zmc2V0IHsgfX07CisKKyAgICAvLyBNYXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVk
IGluIHRoZSBzaW1wbGUgZm9ybWF0dGluZyBidWZmZXI6CisgICAgLy8gNyAobWF4LiBkaWdpdHMg
aW4geWVhcikKKyAgICAvLyArIDMgKiA0ICgyIGRpZ2l0cyBhbmQgMSBzZXBhcmF0b3IgZWFjaCBm
b3IgbW9udGgsIGRheSwgaG91ciwgbWludXRlKQorICAgIC8vICsgMSBmb3IgbnVsbCB0ZXJtaW5h
dGlvbiA9IDIwLgorICAgIGNoYXIgYnVmZmVyWzIwXTsKKyAgICAvLyBJZiB0aGUgeWVhciBpcyBv
dXRzaWRlIHRoZSBib3VuZHMgb2YgMCBhbmQgOTk5OSBpbmNsdXNpdmUgd2Ugd2FudCB0byB1c2UK
KyAgICAvLyB0aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXQgKFBhZElTT1llYXIpLgorICAgIGludCBj
aGFyYWN0ZXJzV3JpdHRlbjsKKyAgICBpZiAoZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpID4gOTk5
OSB8fCBncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPCAxMDAwKQorICAgICAgICBjaGFyYWN0ZXJz
V3JpdHRlbiA9IHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlKzA3ZC0lMDJkLSUw
MmRUJTAyZDolMDJkIiwgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpLCBncmVnb3JpYW5EYXRlVGlt
ZS5tb250aCgpICsgMSwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSwgZ3JlZ29yaWFuRGF0
ZVRpbWUuaG91cigpLCBncmVnb3JpYW5EYXRlVGltZS5taW51dGUoKSk7CisgICAgZWxzZQorICAg
ICAgICBjaGFyYWN0ZXJzV3JpdHRlbiA9IHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks
ICIlMDRkLSUwMmQtJTAyZFQlMDJkOiUwMmQiLCBncmVnb3JpYW5EYXRlVGltZS55ZWFyKCksIGdy
ZWdvcmlhbkRhdGVUaW1lLm1vbnRoKCkgKyAxLCBncmVnb3JpYW5EYXRlVGltZS5tb250aERheSgp
LCBncmVnb3JpYW5EYXRlVGltZS5ob3VyKCksIGdyZWdvcmlhbkRhdGVUaW1lLm1pbnV0ZSgpKTsK
KyAgICBBU1NFUlQoY2hhcmFjdGVyc1dyaXR0ZW4gPiAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjaGFyYWN0ZXJzV3JpdHRlbikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgaWYgKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjaGFyYWN0ZXJzV3JpdHRlbikgPj0gc2l6ZW9mKGJ1ZmZlcikpCisgICAg
ICAgIHJldHVybiAiIl9zOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKGJ1ZmZlcik7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBuc1BlclNlY29u
ZCB7MScwMDAnMDAwJzAwMH07CisgICAgaW50IGZyYWN0aW9uIHtleGFjdFRpbWUubmFub3NlY29u
ZHNGcmFjdGlvbigpfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAwKQorICAgICAgICBmcmFjdGlvbiAr
PSBuc1BlclNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KGJ1aWxkZXIsIGdy
ZWdvcmlhbkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsKKworICAgIGlm
ICh0aW1lWm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVzIG9uIFRpbWVa
b25lOgorICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVTdHJpbmdfIGJlID8gQnVpbHRpblRp
bWVab25lR2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8sIF9pbnN0YW50XykuCisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdaJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTJlNzRjODMxZTBlMzAyYzY2MWRhYWZkMmRlMjBiY2FiMGRmNjhm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAx
LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50IGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+Cisg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAg
ICByZXR1cm4gdm0udGVtcG9yYWxJbnN0YW50U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgVGVtcG9yYWxJbnN0YW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJU084
NjAxOjpFeGFjdFRpbWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlm
VmFsaWQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJU084NjAxOjpFeGFjdFRpbWUsIFN0cnVjdHVy
ZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZh
bGlkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgU3RydWN0dXJlKiA9IG51bGxwdHIpOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50KiB0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVt
cG9yYWxJbnN0YW50KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGlj
IFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE1pbGxpc2Vjb25kcyhK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZy
b21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRp
YyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUsIEpTVmFsdWUpOworCisgICAgY29uc3RleHByIGNvbnN0IElTTzg2MDE6OkV4YWN0VGlt
ZSBleGFjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGltZTsgfQorCisgICAgY29uc3Qg
SVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsSW5z
dGFudCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgY29uc3QgSVNPODYwMTo6RXhhY3RU
aW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBT
dHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0Owor
ICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxscHRyLCBQcmVjaXNp
b25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0
OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9TdHJpbmco
bV9leGFjdFRpbWUsIHRpbWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJU084NjAxOjpFeGFjdFRp
bWUpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhh
Y3RUaW1lPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAg
c3RhdGljIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqKTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgSVNPODYw
MTo6RXhhY3RUaW1lLCBKU09iamVjdCogdGltZVpvbmUsIFByZWNpc2lvbkRhdGEpOworCisgICAg
SVNPODYwMTo6RXhhY3RUaW1lIG1fZXhhY3RUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlM2RkOTM3ZmQ3OGVjYjNhOWQ0
ZWY4Y2VhZjYxMzU3M2EyNDE4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
aCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25k
cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9z
ZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUpOwor
Cit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmdGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUKKyAg
ZnJvbSAgICAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9t
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoU2Vjb25k
cyAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTWlsbGlzZWNvbmRzICB0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgZnJvbUVwb2NoTWljcm9zZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJv
bUVwb2NoTmFub3NlY29uZHMgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBv
Y2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICAg
ICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKK0BlbmQKKyovCisKK1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkK
K3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBpbnN0YW50UHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVj
dHVyZSogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbEluc3RhbnQp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0
YW50KTsKKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OlRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxUZW1wb3JhbEluc3RhbnQsIGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCkKK3sK
K30KKwordm9pZCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJJbnN0YW50Il9zLCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGluc3RhbnRQcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBpbnN0YW50UHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBv
cmFsSW5zdGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1Rhcmdl
dCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgaW5zdGFudFN0cnVjdHVyZSwg
bmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAx
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
TWlzc2luZyByZXF1aXJlZCBlcG9jaE5hbm9zZWNvbmRzIGFyZ3VtZW50IHRvIFRlbXBvcmFsLklu
c3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgc3RydWN0dXJlKSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsSW5zdGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rp
b25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkluc3RhbnQiKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25k
cyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1p
bGxpc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTmFub3NlY29u
ZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0OTg3ZDlkZTMyMDFiMmM4M2FmM2RlZGUyYTIxODk1YThmMmY2OTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0
aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGU7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0
aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MTI0YzI2MDczYjE5MDRkYzM3YmI2
NWM0NTFmZjU2NmRmMWE5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMzI1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKKwor
I2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGVGdW5jQWRkKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVW50aWwpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
RnVuY1NpbmNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNSb3VuZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb1N0cmluZyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVG9KU09OKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZik7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMpOworc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNy
b3NlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyk7CisKK30KKworI2luY2x1ZGUgIlRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFs
Lkluc3RhbnQiLCAmQmFzZTo6c19pbmZvLCAmaW5zdGFudFByb3RvdHlwZVRhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSkgfTsKKworLyog
U291cmNlIGZvciBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBpbnN0YW50
UHJvdG90eXBlVGFibGUKKyAgYWRkICAgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUZ1bmNBZGQgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHN1YnRy
YWN0ICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3QgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB1bnRpbCAgICAgICAgICAgICAgdGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1VudGlsICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgc2luY2UgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5j
ZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJvdW5kICAgICAgICAgICAg
ICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICBlcXVhbHMgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY0VxdWFscyAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdG9TdHJp
bmcgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb1N0cmluZyAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAgICAgICB0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9KU09OICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAorICB0b0xvY2FsZVN0cmluZyAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9j
YWxlU3RyaW5nICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdmFsdWVPZiAgICAgICAgICAg
IHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCisgIGVwb2NoU2Vjb25kcyAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVHZXR0ZXJFcG9jaFNlY29uZHMgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNz
b3IKKyAgZXBvY2hNaWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVw
b2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9j
aE1pY3Jvc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3Nl
Y29uZHMgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTmFub3NlY29u
ZHMgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzICAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHByb3RvdHlwZTsKK30KKworU3RydWN0dXJlKiBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkQWRkaXRp
b25Vbml0cyA9IHsKKyAgICBUZW1wb3JhbFVuaXQ6OlllYXIsCisgICAgVGVtcG9yYWxVbml0OjpN
b250aCwKKyAgICBUZW1wb3JhbFVuaXQ6OldlZWssCisgICAgVGVtcG9yYWxVbml0OjpEYXksCit9
OworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuYWRkIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBjb25zdCBJU084
NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgZGlzYWxsb3dlZEFkZGl0
aW9uVW5pdHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RUaW1lID0gaW5z
dGFudC0+ZXhhY3RUaW1lKCkuYWRkKGR1cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkg
eworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFkZGl0aW9u
IGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsICpuZXdFeGFj
dFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJ
bnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKworICAgIGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJh
dGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1l
PiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAg
ICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZv
ciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxp
ZChnbG9iYWxPYmplY3QsICpuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0
YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1w
b3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVl
IG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIElTTzg2MDE6OkR1cmF0aW9u
IHJlc3VsdCA9IGluc3RhbnQtPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBvdGhlciwgb3B0aW9u
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zaW5jZSBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhl
ciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6
RHVyYXRpb24gcmVzdWx0ID0gb3RoZXItPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBpbnN0YW50
LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBKU1ZhbHVlIG9wdGlv
bnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVk
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFy
Z3VtZW50Il9zKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0
YW50LT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5z
dGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgbmV3RXhh
Y3RUaW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnBy
b3RvdHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFu
dChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihpbnN0YW50LT5leGFjdFRpbWUoKSA9PSBvdGhlci0+ZXhhY3RUaW1lKCkpKTsKK30KKwor
Ly8gVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQu
cHJvdG90eXBlLnRvc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50
Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZygpKSkpOworfQorCisvLyBGSVhNRTogSXMgdGhp
cyBiZXR0ZXIgYXMgYSBKU0J1aWx0aW4/CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3Jt
YXR0ZXIgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgZm9ybWF0dGVyLT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gRklYTUU6IGNoYW5n
ZSBJbnRsRGF0ZVRpbWVGb3JtYXQgdG8gdXNlIGVwb2NoTmFub3NlY29uZHMKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXR0ZXItPmZvcm1hdChnbG9i
YWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5v
dCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0
YW50LmNvbXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hTZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoU2Vjb25k
cygpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTWlsbGlzZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlz
ZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWNyb3Nl
Y29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVh
cEJpZ0ludE9yQmlnSW50MzIoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9j
aE1pY3Jvc2Vjb25kcygpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2No
TmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpj
cmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hOYW5vc2Vj
b25kcygpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjhkZGZiMTQ2OTg5NzhiOGMwN2UxOGIyMGVjOTNkMzkyZDc5ODM5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQor
CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCA4M2NkNWRi
MGQ5M2QwYWJmOWMyYWVhYTQ5NTdlOTI5ZTk4OGM0NmQyLi4xZWEyYjRmMTM5MTRjN2Y2ZTU5MDIy
NzhjOTUxY2U0YTBkYTM1NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbmNsdWRlICJUZW1w
b3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgiCisjaW5jbHVkZSA8d3RmL0ludDEy
OC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAtNjUsNiArNjgsMTMgQEAgc3RhdGlj
IEpTVmFsdWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmpl
Y3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlSW5zdGFu
dENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9i
amVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCkt
PnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBs
YWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1w
b3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmpl
Y3QpOwpAQCAtODksNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEBiZWdpbiB0ZW1wb3JhbE9i
amVjdFRhYmxlCiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJh
dGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgSW5zdGFu
dCAgICAgICAgY3JlYXRlSW5zdGFudENvbnN0cnVjdG9yICAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFp
blRpbWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpv
bmUgICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCkBAIC0zNDksNiArMzYwLDE3IEBAIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0Zy
YWN0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6CiAg
ICAgfQogfQogCisvLyBGb3JtYXRTZWNvbmRzU3RyaW5nUGFydCAoIHNlY29uZCwgbWlsbGlzZWNv
bmQsIG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0c2Vjb25kc3N0cmluZ3Bh
cnQKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
dW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSBwcmVjaXNp
b24pCit7CisgICAgaWYgKHByZWNpc2lvbi51bml0ID09IFRlbXBvcmFsVW5pdDo6TWludXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBidWlsZGVyLmFwcGVuZCgnOicsIHBhZCgnMCcsIDIsIHNl
Y29uZCkpOworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlv
biwgcHJlY2lzaW9uLnByZWNpc2lvbik7Cit9CisKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9u
Um91bmRpbmdJbmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3JhbGR1cmF0aW9ucm91bmRpbmdpbmNy
ZW1lbnQKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVt
cG9yYWxVbml0IHVuaXQpCkBAIC00MTAsNiArNDMyLDQzIEBAIGRvdWJsZSByb3VuZE51bWJlclRv
SW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUgbW9kZSkK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgSW50MTI4IGFi
cyhJbnQxMjggeCkKK3sKKyAgICByZXR1cm4geCA8IDAgPyAteCA6IHg7Cit9CisKKy8vIFNhbWUg
YXMgYWJvdmUsIGJ1dCB3aXRoIEludDEyOAorSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
SW50MTI4IHgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQoreworICAgIGlm
IChpbmNyZW1lbnQgPT0gMSkKKyAgICAgICAgcmV0dXJuIHg7CisKKyAgICBJbnQxMjggcXVvdGll
bnQgPSB4IC8gaW5jcmVtZW50OworICAgIEludDEyOCByZW1haW5kZXIgPSB4ICUgaW5jcmVtZW50
OworICAgIGlmICghcmVtYWluZGVyKQorICAgICAgICByZXR1cm4geDsKKworICAgIGJvb2wgc2ln
biA9IHJlbWFpbmRlciA8IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGlu
Z01vZGU6OkNlaWw6CisgICAgICAgIGlmICghc2lnbikKKyAgICAgICAgICAgIHF1b3RpZW50Kys7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAg
aWYgKHNpZ24pCisgICAgICAgICAgICBxdW90aWVudC0tOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICAvLyAiaGFsZiB1cCBhd2F5IGZyb20gemVybyIK
KyAgICAgICAgaWYgKGFicyhyZW1haW5kZXIgKiAyKSA+PSBpbmNyZW1lbnQpCisgICAgICAgICAg
ICBxdW90aWVudCArPSBzaWduID8gLTEgOiAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHF1b3RpZW50ICogaW5jcmVtZW50OworfQorCiBUZW1wb3JhbE92ZXJmbG93IHRvVGVt
cG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucykKIHsKICAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1wb3JhbE92ZXJmbG93PihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5vdmVyZmxv
dywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmlu
ZGV4IGM0YjFkNDcyNmIzNDZkNTE5YTU2ZmFhMzIxNmJkZmM4OGU5OTIxODMuLjdiYTNmMTRhY2M2
NWZjNDQxNTZhMDdkNGY2MDI4ODdiMTAxMjVlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUyLDYgKzUzLDIw
IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzID0gMCBK
U0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NPVU5UCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51
bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyA9IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVf
VU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTKTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9S
QUxfVU5JVFMKIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyN0YWJsZS10
ZW1wb3JhbC10ZW1wb3JhbGR1cmF0aW9ubGlrZS1wcm9wZXJ0aWVzCitzdGF0aWMgY29uc3RleHBy
IFRlbXBvcmFsVW5pdCB0ZW1wb3JhbFVuaXRzSW5UYWJsZU9yZGVyW251bWJlck9mVGVtcG9yYWxV
bml0c10gPSB7CisgICAgVGVtcG9yYWxVbml0OjpEYXksCisgICAgVGVtcG9yYWxVbml0OjpIb3Vy
LAorICAgIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsCisgICAgVGVtcG9yYWxVbml0OjpNaWxs
aXNlY29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1v
bnRoLAorICAgIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6OlNl
Y29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6OldlZWssCisgICAgVGVtcG9yYWxVbml0OjpZZWFyLAor
fTsKKwogY2xhc3MgVGVtcG9yYWxPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBAIC0xMDIs
OSArMTE3LDExIEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRlbXBvcmFsRnJhY3Rpb25hbFNl
Y29uZERpZ2l0cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0CiBQcmVjaXNpb25EYXRhIHNlY29u
ZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucyk7CiBS
b3VuZGluZ01vZGUgdGVtcG9yYWxSb3VuZGluZ01vZGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCosIFJvdW5kaW5nTW9kZSk7CiB2b2lkIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihTdHJp
bmdCdWlsZGVyJiwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4pOwordm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiwgdW5z
aWduZWQgc2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSk7CiBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5pdCk7CiBk
b3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJvb2wgaW5jbHVzaXZl
KTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGluY3JlbWVu
dCwgUm91bmRpbmdNb2RlKTsKK0ludDEyOCByb3VuZE51bWJlclRvSW5jcmVtZW50KEludDEyOCwg
SW50MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAogZW51bSBjbGFzcyBUZW1wb3JhbE92
ZXJmbG93IDogYm9vbCB7CiAgICAgQ29uc3RyYWluLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDk5NmEwNmRhYWJhODJjY2VmYjQzZGYzZjY1ZjEzMWU2ZmRlNmVlMDcuLjQ4
ZmQ2YzlhNjY5ZjUyMmNlNDczYTJhMzcyMTRkOGY2OGE2NTVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTE2NCw2ICsxNjQsNyBAQAogI2luY2x1ZGUgIlN5bWJvbE9i
amVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCiAjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5jbHVk
ZSAiVGVzdFJ1bm5lclV0aWxzLmgiCkBAIC0xNTkxLDYgKzE1OTIsNyBAQCBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFRlbXBvcmFsQ2FsZW5kYXIpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbElu
c3RhbnQpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQ
bGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxQbGFpblRpbWUp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9u
ZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFRpbWVab25lKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OEFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggN2E1OGIyNzllNjcwYTg0MDNkMWYzOTQxMjM1N2Q1ZTc3MTEzZjU3OC4uYWJhMmY2
NmEwN2IzN2IxNWM1ODVhMmY4NmYwYjZjZTRmMmYyODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC0xODYsNiArMTg2LDcgQEAgY2xhc3MgUmVnRXhwOwogI2VuZGlmCiBjbGFz
cyBTeW1ib2w7CiBjbGFzcyBUZW1wb3JhbER1cmF0aW9uOworY2xhc3MgVGVtcG9yYWxJbnN0YW50
OwogY2xhc3MgVHlwZWRBcnJheUNvbnRyb2xsZXI7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsK
IGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKQEAgLTU5Nyw2ICs1OTgsNyBAQCBwdWJsaWM6
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRl
bXBvcmFsQ2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmlu
ZGV4IGRlMGI0NWJkMGE4OGVhYmE0NjZiNmU2YzBhZDY2ZGMwMmY1MjU3NDEuLjdiYjI3ZTk5NzZm
YjE0ZTA2ZmE0ZWU0ODU1MzYxN2ZjYTA2ZDhkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtMzg4LDYgKzM4
OCwxMSBAQCBpbmxpbmUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIs
IGJvb2wgbGVhcFllYXIpCiAgICAgcmV0dXJuIGQgLSBzdGVwOwogfQogCitpbmxpbmUgZG91Ymxl
IHRpbWVUb01TKGRvdWJsZSBob3VyLCBkb3VibGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMp
Cit7CisgICAgcmV0dXJuICgoKGhvdXIgKiBXVEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdU
Rjo6c2Vjb25kc1Blck1pbnV0ZSArIHNlYykgKiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOworfQor
CiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4K
IFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zm
c2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApAQCAt
NDEwLDYgKzQxNSw3IEBAIHVzaW5nIFdURjo6bXNUb0hvdXJzOwogdXNpbmcgV1RGOjpzZWNvbmRz
UGVyRGF5OwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyTWludXRlOwogdXNpbmcgV1RGOjpwYXJzZURh
dGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwordXNpbmcgV1RGOjp0aW1lVG9NUzsKIHVz
aW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwogdXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZz
ZXQ7CiB1c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ludDEyOC5oIGIvU291cmNlL1dURi93dGYvSW50MTI4LmgKaW5kZXggNjVm
ZTgzMjQzYTIwODNhY2NmYzY5YzBjNjM1ZDU2YTg4MDM0NTY0MC4uOGE0ZGYzNDBhODIxNDg1MWE1
YzUyYmEwMzYzOThlZTJiODBhOWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTI4
LmgKKysrIGIvU291cmNlL1dURi93dGYvSW50MTI4LmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGlj
OgogICAgICAgICA6IGxvd18ge3N0YXRpY19jYXN0PHN0ZDo6dWludDY0X3Q+KG4pfQogICAgICAg
ICAsIGhpZ2hfIHstc3RhdGljX2Nhc3Q8c3RkOjp1aW50NjRfdD4obiA8IDApfQogICAgIHsgfQor
ICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKGNvbnN0IEludDEyOEltcGw8IUlTX1NJR05FRD4gbikK
KyAgICAgICAgOiBsb3dfIHtuLmxvdygpfSwgaGlnaF8ge24uaGlnaCgpfSB7IH0KICAgICBjb25z
dGV4cHIgSW50MTI4SW1wbChjb25zdCBJbnQxMjhJbXBsICYpID0gZGVmYXVsdDsKICAgICBjb25z
dGV4cHIgSW50MTI4SW1wbChJbnQxMjhJbXBsICYmKSA9IGRlZmF1bHQ7CiAgICAgY29uc3RleHBy
IEludDEyOEltcGwgJm9wZXJhdG9yPShjb25zdCBJbnQxMjhJbXBsICYpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Zl
NDA5ODE3OWNhMGZjNDY4NDkzYTIwZWY0YzMxNmMwMmE5MTkzOS4uMDRkZThhNTkxNTVhMzc0OWMz
NTk5YWJjMjMwYzRmOTcwYWJjY2FmMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wOS0yMyAgUGhpbGlw
IENoaW1lbnRvICA8cGhpbGlwLmNoaW1lbnRvQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJ
bXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RCZSk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChpbnN0YW50cy5mb3JFYWNoKToKKyAgICAgICAgKHNob3VsZFRo
cm93Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1s
OiBObyBuZWVkIHRvIGlnbm9yZSBhbGwgVGVtcG9yYWwuSW5zdGFudCB0ZXN0cworICAgICAgICAg
IGFueW1vcmUsIG9ubHkgdGhlIG9uZXMgZm9yIHRoZSB1bmltcGxlbWVudGVkIG1ldGhvZHMuCisK
IDIwMjEtMDktMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtKU0NdIEhhbmRsZSBzeW50YWN0aWMgcHJvZHVjdGlvbiBmb3IgYCN4IGluIGV4cHJg
IGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5q
cyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2OGU3
YTE2MjcxMGMyZjg1NTM4MzIxNzY2M2RjYWEyYjliZDdkMwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKQEAgLTAsMCArMSwyOTEgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZE5vdEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsID09PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBh
IHZhbHVlIHRvIGJlIGRpZmZlcmVudCBmcm9tICR7ZXhwZWN0ZWR9YCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBlcnJvcjsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUp
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWAp
OworICAgIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpCisgICAgICAgIGlmIChPYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7Cisg
ICAgICAgICAgICBpZiAoIW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRj
aCAke21lc3NhZ2V9IWApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUo
U3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CisgICAgICAgIH0KK30KKworLy8gZXBvY2gKK3sKKyAg
ICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pLAor
ICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMCksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDApLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JF
YWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRz
LCAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgMCk7Cisg
ICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDBuKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQudG9TdHJpbmcoKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgIH0p
OworfQorCisvLyBwb3NpdGl2ZSBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0g
WworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAw
biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygxXzAwMF8wMDBf
MDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMV8w
MDBfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jv
c2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hOYW5vc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAg
ICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAwMS0wOS0wOVQwMTo0Njo0MFonKSwKKyAgICBd
OworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaFNlY29uZHMsIDFfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwXzAwMG4p
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8w
MDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAn
MjAwMS0wOS0wOVQwMTo0Njo0MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04o
KSwgJzIwMDEtMDktMDlUMDE6NDY6NDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG5lZ2F0aXZlIGVw
b2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3Jh
bC5JbnN0YW50KC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtMV8wMDBfMDAwXzAwMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAwMCksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC0xXzAwMF8wMDBf
MDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vj
b25kcygtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCAtMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxs
aXNlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hNaWNyb3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAw
MG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxOTM4LTA0LTI0VDIy
OjEzOjIwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTkzOC0wNC0y
NFQyMjoxMzoyMFonKTsKKyAgICB9KTsKK30KKworLy8gbWF4aW50NjQgZXBvY2ggdmFsdWUKK3sK
KyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoOTIy
MzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5h
bm9zZWNvbmRzKDkyMjMzNzIwMzY4NTQ3NzU4MDduKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKSwKKyAgICBdOworICAgIGlu
c3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaFNlY29uZHMsIDkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2No
TWlsbGlzZWNvbmRzLCA5MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pY3Jvc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4
MDdaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMjYyLTA0LTExVDIz
OjQ3OjE2Ljg1NDc3NTgwN1onKTsKKyAgICB9KTsKK30KKworLy8gbWluaW50NjQgZXBvY2ggdmFs
dWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3Rh
bnQoLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hOYW5vc2Vjb25kcygtOTIyMzM3MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicpLAorICAgIF07
CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoU2Vjb25kcywgLTkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtOTIyMzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzU4MDhu
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTY3Ny0wOS0yMVQwMDox
Mjo0My4xNDUyMjQxOTJaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcx
Njc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKTsKKyAgICB9KTsKK30KKworLy8gbWF4IElu
c3RhbnQgcmFuZ2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBv
cmFsLkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyg4NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBU
ZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAw
KSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoODY0MDBf
MDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hO
YW5vc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpLAorICAgIF07CisgICAg
aW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoU2Vjb25kcywgODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pbGxpc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgODY0MDBfMDAwMF8w
MDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwg
JysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9K
U09OKCksICcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyBtaW4g
SW5zdGFudCByYW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVt
cG9yYWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtODY0MDBfMDAwMF8wMDAwKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTg2NDAwXzAwMDBfMDAw
MF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygt
ODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hOYW5vc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKSwKKyAgICBd
OworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaFNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBf
MDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC04
NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50
b1N0cmluZygpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC50b0pTT04oKSwgJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9
CisKKy8vIHRvbyBsYXJnZQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQo
ODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC9cYjg2NDAwMDAwMDAw
MDAwMDAwMDAwMDFcYi8pOworLy8gdG9vIHNtYWxsCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVt
cG9yYWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3Is
IC8tODY0MDAwMDAwMDAwMDAwMDAwMDAwMVxiLyk7CisvLyBsYXJnZXIgdGhhbiBtYXhpbnQxMjgK
K3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFuIDw8IDEyOW4pLCBSYW5n
ZUVycm9yLCAvXGI2ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5MTJcYi8pOwor
Ly8gc21hbGxlciB0aGFuIG1pbmludDEyOAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFs
Lkluc3RhbnQoLTFuIDw8IDEyOW4pLCBSYW5nZUVycm9yLCAvLTY4MDU2NDczMzg0MTg3NjkyNjky
Njc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBkb2VzIG5vdCBjcmFzaCB3aGVuIGJpZ2ludCBs
b25nZXIgdGhhbiBtYXhpbnQzMiBkaWdpdHMKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3Jh
bC5JbnN0YW50KEJpZ0ludCgnOScucmVwZWF0KDIxNDc0ODM2NDcpKSksIFJhbmdlRXJyb3IpOwor
Ly8gY29uc3RydWN0cyBmcm9tIHN0cmluZworc2hvdWxkQmUobmV3IFRlbXBvcmFsLkluc3RhbnQo
JzAnKS5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisvLyB0aHJvd3Mgb24gbnVtYmVyCitzaG91bGRU
aHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgwKSwgVHlwZUVycm9yKTsKKy8vIHRocm93
cyBvbiBzdHJpbmcgdGhhdCBkb2VzIG5vdCBjb252ZXJ0IHRvIEJpZ0ludAorc2hvdWxkVGhyb3co
KCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoJ2FiYzEyMycpLCBTeW50YXhFcnJvcik7CisKKy8v
IEluc3RhbnQuZnJvbShpbnN0YW50KSBpcyBub3QgdGhlIHNhbWUgb2JqZWN0Cit7CisgICAgY29u
c3QgaW5zdCA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAyMC0wMi0xMlQxMTo0MiswMTowMFtF
dXJvcGUvQW1zdGVyZGFtXScpOworICAgIHNob3VsZE5vdEJlKFRlbXBvcmFsLkluc3RhbnQuZnJv
bShpbnN0KSwgaW5zdCk7Cit9CisKKy8vIHRvU3RyaW5nCisKK3sKKyAgICBjb25zdCBpMSA9IFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyM1onKTsKKyAgICBjb25zdCBpMiA9
IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKKyAgICBjb25z
dCBpMyA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0Wicp
OworCisgICAgLy8gZGVmYXVsdCBpcyB0byBlbWl0IHNlY29uZHMgYW5kIGRyb3AgdHJhaWxpbmcg
emVyb3MgYWZ0ZXIgdGhlIGRlY2ltYWwnCisgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcoKSwgJzE5
NzYtMTEtMThUMTU6MjM6MDBaJyk7CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoKSwgJzE5NzYt
MTEtMThUMTU6MjM6MzBaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoKSwgJzE5NzYtMTEt
MThUMTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8vIHRydW5jYXRlcyB0byBtaW51dGUKKyAgICBb
aTEsIGkyLCBpM10uZm9yRWFjaCgoaSkgPT4gc2hvdWxkQmUoaS50b1N0cmluZyh7IHNtYWxsZXN0
VW5pdDogJ21pbnV0ZScgfSksICcxOTc2LTExLTE4VDE1OjIzWicpKTsKKworICAgIC8vIG90aGVy
IHNtYWxsZXN0VW5pdHMgYXJlIGFsaWFzZXMgZm9yIGZyYWN0aW9uYWwgZGlnaXRzCisgICAgc2hv
dWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pLCBpMy50b1N0cmlu
Zyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDAgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3Ry
aW5nKHsgc21hbGxlc3RVbml0OiAnbWlsbGlzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0
aW9uYWxTZWNvbmREaWdpdHM6IDMgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21h
bGxlc3RVbml0OiAnbWljcm9zZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNv
bmREaWdpdHM6IDYgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0
OiAnbmFub3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czog
OSB9KSk7CisKKyAgICAvLyB0cnVuY2F0ZSBvciBwYWQgdG8gMiBwbGFjZXMKKyAgICB7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDIgfTsKKyAgICAg
ICAgc2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAwLjAw
WicpOworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlvbnMpLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKKyAgICB9CisgICAgLy8gcGFkIHRvIDcgcGxhY2Vz
CisgICAgeworICAgICAgICBjb25zdCBvcHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiA3IH07CisgICAgICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0x
OFQxNToyMzowMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRp
b25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUo
aTMudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQwMDBaJyk7Cisg
ICAgfQorCisgICAgLy8gcm91bmQgdG8gbmVhcmVzdAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5n
KHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSks
ICcxOTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2
LTExLTE4VDE1OjIzOjMwLjEyM1onKTsKKyAgICAvLyByb3VuZCB1cAorICAgIHNob3VsZEJlKGky
LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcg
fSksICcxOTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJh
Y3Rpb25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyNFonKTsKKyAgICAvLyByb3VuZCBkb3duCisgICAgWydmbG9vcicsICd0
cnVuYyddLmZvckVhY2goKHJvdW5kaW5nTW9kZSkgPT4geworICAgICAgICBzaG91bGRCZShpMi50
b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYt
MTEtMThUMTU6MjNaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25h
bFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjNaJyk7CisgICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIHJvdW5kaW5nIGRvd24gaXMgdG93
YXJkcyB0aGUgQmlnIEJhbmcsIG5vdCB0b3dhcmRzIDEgQkNFCisgICAgICAgIGNvbnN0IGk0ID0g
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCctMDAwMDk5LTEyLTE1VDEyOjAwOjAwLjVaJyk7CisgICAg
ICAgIHNob3VsZEJlKGk0LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJywgcm91bmRp
bmdNb2RlOiAnZmxvb3InIH0pLCAnLTAwMDA5OS0xMi0xNVQxMjowMDowMFonKTsKKworICAgICAg
ICAvLyByb3VuZGluZyBjYW4gYWZmZWN0IGFsbCB1bml0cworICAgICAgICBjb25zdCBpNSA9IFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5OTlaJyk7Cisg
ICAgICAgIHNob3VsZEJlKGk1LnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOCwg
cm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMDAw
MDAwWicpOworICAgIH0KK30KKworLy8gbGVhcCBzZWNvbmQgaXMgY29uc3RyYWluZWQKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAxNi0xMi0zMVQyMzo1OTo2MFonKX1gLCAn
MjAxNi0xMi0zMVQyMzo1OTo1OVonKTsKKy8vIHZhcmlhbnQgdGltZSBzZXBhcmF0b3JzCitzaG91
bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMTggMTU6MjNaJyl9YCwgJzE5
NzYtMTEtMThUMTU6MjM6MDBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYtMTEtMTh0MTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyB2YXJp
YW50IFVUQyBkZXNpZ25hdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTU6MjN6Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyBhbnkgbnVt
YmVyIG9mIGRlY2ltYWwgcGxhY2VzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKX1gLCAnMTk3Ni0xMS0xOFQx
NToyMzozMC4xMjNaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTU6MjM6MzAuMTIzNFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
MzQ1WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1WicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NlonKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjM0NTZaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjM0NTY3WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1
Njc4WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyMzQ1Njc4OVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7
CisvLyB2YXJpYW50IGRlY2ltYWwgc2VwYXJhdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAsMTJaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMTJaJyk7CisvLyB2YXJpYW50IG1pbnVzIHNpZ24KK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlx1MjIxMjAyOjAwJyl9YCwgJzE5NzYt
MTEtMThUMTc6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
J1x1MjIxMjAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnLTAwOTk5OS0xMS0xOFQxNToy
MzozMC4xMlonKTsKKy8vIG1peHR1cmUgb2YgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAorc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNToyMzozMC4xKzAwOjAw
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEt
MThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTUy
MzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEt
MThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAw
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3
NjExMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIzMzAuMSswMDAw
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKKy8vIG9wdGlvbmFsIHBhcnRzCitzaG91
bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzArMDAnKX1g
LCAnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3Ni0xMS0xOFQxNVonKX1gLCAnMTk3Ni0xMS0xOFQxNTowMDowMFonKTsKKy8vIGln
bm9yZXMgYW55IHNwZWNpZmllZCBjYWxlbmRhcgorLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyCisv
LyBzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzNDU2Nzg5Wlt1LWNhPWRpc2NvcmRdJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2
Nzg5WicpOworLy8gbm8ganVuayBhdCBlbmQgb2Ygc3RyaW5nCitzaG91bGRUaHJvdygoKSA9PiBU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wmp1bmsn
KSwgUmFuZ2VFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwg
Yi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMzEyYzI2ODZmMDA0YmI2MTI0YmE3
ZDBlYjRjYmI0OWZlMDEwOGQ4MC4uNWQ0ZjY0YjBmZGI2NGI0OGMyMjdkOTI0ODczODQxOTcwZTIw
MDQxMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjMsNyArMjMsOCBAQCBza2lwOgogICAgIC0gU2hh
ZG93UmVhbG0KICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9DYWxlbmRh
cgotICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudAorICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lCisgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJ
U08KICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL05vdwogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvUGxhaW5EYXRlCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFp
bkRhdGVUaW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439756</attachid>
            <date>2021-09-30 10:31:26 -0700</date>
            <delta_ts>2021-10-06 13:01:03 -0700</delta_ts>
            <desc>Patch for preliminary review</desc>
            <filename>bug-229826-20210930103124.patch</filename>
            <type>text/plain</type>
            <size>123342</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NzZjYjg0MTUyNWVjZGU0YTQ5NmRmZGFjM2RkY2NlMzliNjNiODEwLi5lMWZhZWZlOTI2OWU1MGFk
ZGY3MTBjOWVkY2RlM2ViZTczODRjNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50
b0BnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNpbmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3Ry
aW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhl
ciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpm
cm9tSVNPUGFydHNBbmRPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6
OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6cm91bmQpOgor
ICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmRpZmZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0lTTzg2MDEuaDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yW10pOiBBZGQgYW4gb3ZlcmxvYWQgZm9yIER1cmF0aW9uW10KKyAgICAgICAgICB0aGF0IGlu
ZGV4ZXMgYnkgVGVtcG9yYWxVbml0IGVudW0gaW5zdGVhZCBvZiBpbnRlZ2VyIGluZGV4LgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6RXhhY3RUaW1lKTogQWRkIGFuIEV4YWN0VGltZSB0
eXBlIHRoYXQgd3JhcHMKKyAgICAgICAgICBhbiBJbnQxMjggYW5kIGNhbiBkbyB0aGUgYmFzaWMg
b3BlcmF0aW9ucy4gVGhpcyB0eXBlIGNhbiBiZSByZXVzZWQgaW4KKyAgICAgICAgICBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lLgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9j
aE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVw
b2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aFNlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmVwb2No
TWlsbGlzZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpl
cG9jaE1pY3Jvc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGlt
ZTo6ZXBvY2hOYW5vc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6bmFub3NlY29uZHNGcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OkV4YWN0VGltZTo6cHJpbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0
b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+PSBjb25z
dCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+IGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKTogQWRkIGEgbWluaW1hbAorICAgICAg
ICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYW5kbGVEYXRlVGltZVZhbHVlIGFic3RyYWN0IG9w
IGZyb20gdGhlCisgICAgICAgICAgVGVtcG9yYWwgc3BlY2lmaWNhdGlvbiwgb25seSBjb3Zlcmlu
ZyBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOiBVc2UgaXQgaW4gdGhlIGV4aXN0aW5nCisgICAgICAgICAgSW50bC5EYXRlVGltZUZvcm1h
dCBtZXRob2RzLgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6IEFkZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGFuIElu
dDEyOC4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6IFJlbW92ZSBkZWNsYXJhdGlvbiBm
b3Igbm9uZXhpc3RlbnQgdG9VaW50NjRIZWFwKCkuCisgICAgICAgICogcnVudGltZS9KU0RhdGVN
YXRoLmNwcDogTW92ZSB0aW1lVG9NUygpIGludG8gV1RGLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5zdGFudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbUR1cmF0aW9uTGlrZSk6
IEFjY2VzcyBEdXJhdGlvbiBwcm9wZXJ0aWVzIGluCisgICAgICAgICAgdGhlIG9yZGVyIGRlZmlu
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246
OnRvTGltaXRlZER1cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OndpdGggY29uc3QpOiBBY2Nlc3MgRHVyYXRpb24gcHJvcGVydGllcyBpbiB0aGUKKyAgICAg
ICAgICBvcmRlciBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OnRvSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25kcyk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMpOgorICAgICAgICAoSlND
OjpUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAg
ICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnN0YW50
Q29uc3RydWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Zm9ybWF0U2Vjb25kc1N0cmluZ1Bh
cnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YWJzKTogQWRkZWQgZm9yIGNsYXJpdHkuCisgICAg
ICAgIChKU0M6OnJvdW5kTnVtYmVyVG9JbmNyZW1lbnQpOiBBZGQgb3ZlcmxvYWQgZm9yIEludDEy
OC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6IEFkZCBhcnJheSBjb3JyZXNw
b25kaW5nIHRvIHRoZSB0YWJsZSBpbiB0aGUKKyAgICAgICAgICBzcGVjIHRleHQgc3BlY2lmeWlu
ZyBhbHBoYWJldGljYWwgYWNjZXNzIG9yZGVyIGZvciB1bml0IHByb3BlcnRpZXMuCisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTIz
ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KIAogICAgICAgICBWYXJp
b3VzIHR3ZWFrcyBpbiBwcmVwYXJhdGlvbiBmb3IgVGVtcG9yYWwuSW5zdGFudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3Yzdj
NGU5Nzc5YTg5YjIzNDdkMjY0YWFkNjU3YzZjOGY2Y2ZhYjI3Li43OWFmMDdkZGY0YzUyYWY1ZTM4
NGFkODllNjQyMGM5Y2ZkYzlkOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA5LTIzICBQ
aGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9AZ21haWwuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAoV1RGOjp0
aW1lVG9NUyk6IE1vdmVkIGZyb20gSlNEYXRlTWF0aC5oLgorICAgICAgICAqIHd0Zi9JbnQxMjgu
aDoKKyAgICAgICAgKFdURjo6SW50MTI4SW1wbDo6SW50MTI4SW1wbCk6IEFkZCBhIGNvbnZlcnNp
b24gZnJvbSBJbnQxMjggdG8gVUludDEyOAorICAgICAgICAgIGFuZCB2aWNlIHZlcnNhLgorCiAy
MDIxLTA5LTIzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgbW9yZSBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIHRvIFdlYkNvcmU6Omxpbmtl
ZE9uT3JBZnRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmZkMjBk
N2RlZjkyYjY0ZDE5NGE3NTRhZWQxZjFhY2JiOGJlOWE4Yy4uMDg5ZjY0Y2Y3ZDFjMWZmNDg3N2Uw
NzExNzAzYzMwMGY4NTU2ZDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTExLDYgKzExMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZWNiY2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODky
YTZmMDhjNWRhNDBkNi4uMDE1ZTZhNDlkMGU4MzU5MTNiNDFiZDJlNTNjZmM1Y2ZlYTJiMWEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5NSw2ICsx
OTUsOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmx1dC5oIFwKICAg
ICBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIFwK
ICAgICBUZW1wb3JhbE5vdy5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAogICAg
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZTg2YmE4ZGMwYmI5Y2FiZjRiMTM0Y2IxMzI0ZDI0MTZmY2NmOWE3Li41
ODVjNzYyMzgyZTFmYjdmNTZmMDZlMTFiNTc5OGEzYmM4Nzk0NjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTk1Nyw2ICsxOTU3LDExIEBACiAJCUUzRkY3NTMzMUQ5Q0VBMTgw
MEM3RTE2RCAvKiBET01KSVRHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01KSVRH
ZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTEx
MkVGMjcyMjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2RDEyRUYyOTUzMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUY2RDY3RDQwMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNB
MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAqLzsgfTsKKwkJRjZENjdENDIy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzQzI2RjkwMkU3MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRjZENjdENDQy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0UyNkY5MDJFODAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oICovOyB9OworCQlGNkQ2N0Q0NzI2Rjkx
MzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0Q0NTI2RjkxMzBBMDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUY2RDY3
RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0Q0NjI2Rjkx
MzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlG
NkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkYxNTAyMDI2OTNENDUwMDA0
Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggKi87IH07CiAJCUZFMDQxNTUzMjUyRUMwNzMw
MDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNDE1NTIyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNp
dG9yTWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTky
RDZBMTExRkJENDkxRDAwMDI0NUY0IC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3BwICov
OyB9OwpAQCAtNTMyNSw2ICs1MzMwLDE0IEBACiAJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAv
KiBSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB9OwogCQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg3MDI1NTU5N0Qw
MUZGNjBGNyAvKiBKU0NKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0pTVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVtcG9yYWxJbnN0YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdE
M0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjZENjdEM0IyNkY5MDJFNjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZE
NjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0UyNkY5MDJFODAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdE
NDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdENDYyNkY5MTMwQjAw
NkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9y
YWxOb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxOb3cuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVGIC8q
IFRlbXBvcmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUw
MUEyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MDU2LDYgKzcwNjksOCBAQAogCQkJCTk5NkI3MzE0MUJEOUZBMkMwMDMzMUI4NCAv
KiBTeW1ib2xQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJRTNDNDYzMDUyNkRCNURFOTAwODk2MzM2
IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNjI2
REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLywKKwkJ
CQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
bHV0LmggKi8sCisJCQkJRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlGNkYxNTAyMDI2OTNENDUwMDA0Qjk4RUYgLyogVGVt
cG9yYWxPYmplY3QubHV0LmggKi8sCiAJCQkJNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdh
c21PcHMuaCAqLywKIAkJCQlBRDJGQ0MwQTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKQEAgLTgwMTQsNiArODAyOSwxMiBAQAog
CQkJCUEzQzdFREI0MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3IuaCAqLywKIAkJCQlBM0M3RURCNTI2QjBEQjM3MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTNDN0VEQjAyNkIwREIzNjAwNEMzNEM1IC8qIFRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCAqLywKKwkJCQlGNkQ2N0QzOTI2RjkwMkU1MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLywKKwkJCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmggKi8sCisJCQkJRjZENjdEM0IyNkY5MDJFNjAwNkUwMzQ5IC8q
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlGNkQ2N0QzQzI2RjkwMkU3
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLywKKwkJCQlGNkQ2N0Qz
RDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
Ki8sCiAJCQkJRjZGMTUwMUIyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmNwcCAqLywK
IAkJCQlGNkYxNTAxODI2OTNEMzNEMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuaCAqLywKIAkJCQlG
NkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuY3BwICovLApAQCAtOTYy
Niw3ICs5NjQ3LDYgQEAKIAkJCQk1REU2RTVCMzBFMTcyOEVDMDAxODA0MDcgLyogY3JlYXRlX2hh
c2hfdGFibGUgaW4gSGVhZGVycyAqLywKIAkJCQk1MzVDMjQ2MTFGNzg5MjhFMDA2RUM0MEUgLyog
Y3JlYXRlX3JlZ2V4X3RhYmxlcyBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlFOTJCMUJEMTdGQTQw
MDFBQTQxMyAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLywKLQkJCQlFMzg2RkQ3QjI2RTg2N0I4
MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkRGMTdCNkI1QUIwMEE3QUUzRiAvKiBEYXRhVmll
dy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzMyLDcgKzk3NTIsNiBAQAogCQkJCUE3RDg5Q0Y4MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
REQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dl
bmVyYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJB
RDcgLyogREZHR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZBMThBNjAwNzAwMDFB
MjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3NSw3ICsx
MDI5NCw2IEBACiAJCQkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYzMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTM4NkZEN0YyNkU4
NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjZGNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQz
MyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDczNiw3ICsxMDc1
NCwxNSBAQAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBE
QjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1
MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4
NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4NkZEN0YyNkU4NjdCODAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzBFOEE1
NjI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMwRThBNTcyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDg0NmU5ZWU3NWZlZDA1NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcuLjk4
NzdlYTE5ZmZkNzYwNzE1NTYxYTFjNjI5ZGE1ODFkYzEzMTRiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTEwMTcsNiArMTAxNyw5IEBAIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwCitydW50aW1lL1RlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuY3BwCmluZGV4IGU3MmJmNzI3N2IyMmYzNzY1Mjk2NGVmNDQzNjYxMGU5NjM0
MzFkOWMuLjQzOTQ1N2EyOTYyNzJmMzUxNmQwYWUxZWY4YzY2ZjE4ZWZkMDU2MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC04NzcsNiArODc3LDM3IEBA
IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5U
aW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lCiAgICAgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8RXhh
Y3RUaW1lPiBwYXJzZUluc3RhbnQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRlbXBvcmFsSW5zdGFudFN0cmluZwor
ICAgIC8vIFRlbXBvcmFsSW5zdGFudFN0cmluZyA6CisgICAgLy8gICAgIERhdGUgVGltZVpvbmVP
ZmZzZXRSZXF1aXJlZAorICAgIC8vICAgICBEYXRlIERhdGVUaW1lU2VwYXJhdG9yIFRpbWVTcGVj
IFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZU9mZnNldFJlcXVpcmVkCisgICAgLy8gVGltZVpvbmVP
ZmZzZXRSZXF1aXJlZCA6CisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0IFRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbl9vcHQKKworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNp
bmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHsK
KyAgICAgICAgYXV0byBkYXRldGltZSA9IHBhcnNlRGF0ZVRpbWUoYnVmZmVyKTsKKyAgICAgICAg
aWYgKCFkYXRldGltZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGF1dG8gW2RhdGUsIG1heWJlVGltZSwgbWF5YmVUaW1lWm9uZV0gPSBkYXRldGltZS52YWx1ZSgp
OworICAgICAgICBpZiAoIW1heWJlVGltZVpvbmUgfHwgKCFtYXliZVRpbWVab25lLT5tX3ogJiYg
IW1heWJlVGltZVpvbmUtPm1fb2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIC8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhciBhbm5vdGF0aW9uCisgICAgICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgICAgIFBsYWluVGltZSB0aW1lOworICAgICAgICBpZiAobWF5YmVUaW1lKQorICAgICAg
ICAgICAgdGltZSA9IG1heWJlVGltZS52YWx1ZSgpOworCisgICAgICAgIGludDY0X3Qgb2Zmc2V0
ID0gbWF5YmVUaW1lWm9uZS0+bV96ID8gMCA6ICptYXliZVRpbWVab25lLT5tX29mZnNldDsKKyAg
ICAgICAgcmV0dXJuIHtFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIo
KSwgZGF0ZS5tb250aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwg
dGltZS5zZWNvbmQoKSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRp
bWUubmFub3NlY29uZCgpLCBvZmZzZXQpfTsKKyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0dGltZXpvbmVvZmZzZXRz
dHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkK
IHsKQEAgLTk2OSw1ICsxMDAwLDkwIEBAIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0
aW9uJiBkdXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorRXhhY3RUaW1lIEV4YWN0VGlt
ZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24sIHVpbnQ4X3Qg
ZCwgdW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25lZCBtcywgdW5z
aWduZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpCit7CisgICAgQVNTRVJU
KHkgPj0gLTk5OTk5OSAmJiB5IDw9IDk5OTk5OSk7CisgICAgQVNTRVJUKG1vbiA+PSAxICYmIG1v
biA8PSAxMik7CisgICAgQVNTRVJUKGQgPj0gMSAmJiBkIDw9IDMxKTsKKyAgICBBU1NFUlQoaCA+
PSAwICYmIGggPD0gMjMpOworICAgIEFTU0VSVChtaW4gPj0gMCAmJiBtaW4gPD0gNTkpOworICAg
IEFTU0VSVChzID49IDAgJiYgcyA8PSA1OSk7CisgICAgQVNTRVJUKG1zID49IDAgJiYgbXMgPD0g
OTk5KTsKKyAgICBBU1NFUlQobWljcm9zID49IDAgJiYgbWljcm9zIDw9IDk5OSk7CisgICAgQVNT
RVJUKG5zID49IDAgJiYgbnMgPD0gOTk5KTsKKworICAgIGRvdWJsZSBkYXRlRGF5cyA9IGRhdGVU
b0RheXNGcm9tMTk3MCh5LCBtb24gLSAxLCBkKTsKKyAgICBkb3VibGUgdGltZU1zID0gdGltZVRv
TVMoaCwgbWluLCBzLCBtcyk7CisgICAgZG91YmxlIHV0Y01zID0gKGRhdGVEYXlzICogbXNQZXJE
YXkgKyB0aW1lTXMpOworICAgIEludDEyOCB1dGNOcyA9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50
NjRfdD4odXRjTXMpfSAqIDEnMDAwJzAwMCArIG1pY3JvcyAqIDEwMDAgKyBuczsKKyAgICByZXR1
cm4gRXhhY3RUaW1lIHt1dGNOcyAtIG9mZnNldH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RU
aW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOwor
ICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlz
KCkpOworCisgICAgSW50MTI4IHJlc3VsdE5zIHttX2Vwb2NoTmFub3NlY29uZHN9OworCisgICAg
Ly8gVGhlIGR1cmF0aW9uJ3MgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBtaWxsaXNlY29u
ZHMgc2hvdWxkIGJlCisgICAgLy8gYWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1iaXQgaW50LiAy
KjFlOCAyNC1ob3VyIGRheXMgaXMgdGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNwYW4gZm9yIGV4
YWN0IHRpbWUsIHNvIGlmIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlvbiBleGNlZWRz
CisgICAgLy8gdGhhdCwgdGhlbiB3ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBpZiAoZmFicyhkdXJh
dGlvbi5ob3VycygpKSA+IDQ4MDAwMDAwMDApCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5o
b3VycygpKX0gKiBFeGFjdFRpbWU6Om5zUGVySG91cjsKKyAgICBpZiAoZmFicyhkdXJhdGlvbi5t
aW51dGVzKCkpID4gMjg4MDAwMDAwMDAwKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJlc3VsdE5zICs9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubWlu
dXRlcygpKX0gKiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIGlmIChmYWJzKGR1cmF0aW9u
LnNlY29uZHMoKSkgPiAxLjcyOGUrMTMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5zZWNv
bmRzKCkpfSAqIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgaWYgKGZhYnMoZHVyYXRpb24u
bWlsbGlzZWNvbmRzKCkpID4gMS43MjhlKzE2KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJlc3VsdE5zICs9IEludDEyOCB7c3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24u
bWlsbGlzZWNvbmRzKCkpfSAqIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZDsKKyAgICAvLyBG
SVhNRTogcHJlY2lzaW9uLiBjaGVjayBpZiB0aGVyZSBpcyBzdWNoIGEgdGhpbmcgYXMgY2hlY2tl
ZCBpbnRlZ2VyCisgICAgLy8gYXJpdGhtZXRpYyBpbiBXVEYKKyAgICByZXN1bHROcyArPSBJbnQx
Mjgge3N0YXRpY19jYXN0PGludDY0X3Q+KGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpKX0gKiBFeGFj
dFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHtzdGF0aWNf
Y2FzdDxpbnQ2NF90PihkdXJhdGlvbi5uYW5vc2Vjb25kcygpKX07CisKKyAgICBFeGFjdFRpbWUg
cmVzdWx0IHtyZXN1bHROc307CisgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7cmVzdWx0fTsKK30KKworSW50MTI4IEV4
YWN0VGltZTo6cm91bmQoSW50MTI4IHF1YW50aXR5LCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBv
cmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIEludDEyOCBp
bmNyZW1lbnROcyB7aW5jcmVtZW50fTsKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6SG91cjogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1BlckhvdXI7IGJy
ZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IGluY3JlbWVudE5zICo9IEV4YWN0
VGltZTo6bnNQZXJNaW51dGU7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6
IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7IGJyZWFrOworICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Bl
ck1pbGxpc2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6
IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZDsgYnJlYWs7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gcm91bmROdW1iZXJU
b0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50TnMsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8v
IERpZmZlcmVuY2VJbnN0YW50ICggbnMxLCBuczIsIHJvdW5kaW5nSW5jcmVtZW50LCBzbWFsbGVz
dFVuaXQsIHJvdW5kaW5nTW9kZSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC1kaWZmZXJlbmNlaW5zdGFudAorSW50MTI4IEV4YWN0VGltZTo6ZGlm
ZmVyZW5jZShFeGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgSW50MTI4IGRp
ZmYgPSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHMgLSBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAg
cmV0dXJuIHJvdW5kKGRpZmYsIGluY3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2RlKTsKK30KKwor
RXhhY3RUaW1lIEV4YWN0VGltZTo6cm91bmQodW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVu
aXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
RXhhY3RUaW1lIHtyb3VuZChtX2Vwb2NoTmFub3NlY29uZHMsIGluY3JlbWVudCwgdW5pdCwgcm91
bmRpbmdNb2RlKX07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGRhMzczNDEx
MzZjYTI1YjM0OWYyNGVhZTc2Zjk1ODI0YjMyZjkxNzEuLjA1MWFlNTliOGE0MGNhNDI5NTRmOTdi
OTNjMzgyZDlkZDAyOTI2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CkBAIC02MSw2ICs2Miw4IEBAIHB1YmxpYzoKIAog
ICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ldOyB9CiAg
ICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFbaV07IH0KKyAgICBkb3VibGUmIG9wZXJhdG9yW10oVGVtcG9yYWxVbml0IHUpIHsgcmV0dXJu
IG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90Pih1KV07IH0KKyAgICBjb25zdCBkb3VibGUmIG9w
ZXJhdG9yW10oVGVtcG9yYWxVbml0IHUpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVtzdGF0aWNfY2Fz
dDx1aW50OF90Pih1KV07IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmVuZCgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7
IH0KQEAgLTc3LDYgKzgwLDEyMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCBu
dW1iZXJPZlRlbXBvcmFsVW5pdHM+IG1fZGF0YSB7IH07CiB9OwogCitjbGFzcyBFeGFjdFRpbWUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEV4YWN0VGltZSk7CitwdWJsaWM6CisgICAg
Y29uc3RleHByIEV4YWN0VGltZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQg
RXhhY3RUaW1lKEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKSA6IG1fZXBvY2hOYW5vc2Vjb25kcyhl
cG9jaE5hbm9zZWNvbmRzKSB7IH0KKyAgICBjb25zdGV4cHIgRXhhY3RUaW1lKGNvbnN0IEV4YWN0
VGltZSYgb3RoZXIpIDogbV9lcG9jaE5hbm9zZWNvbmRzKG90aGVyLm1fZXBvY2hOYW5vc2Vjb25k
cykgeyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBvY2hTZWNvbmRz
KGludDY0X3QgZXBvY2hTZWNvbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJ
bnQxMjgge2Vwb2NoU2Vjb25kc30gKiBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGludDY0
X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhhY3RUaW1lKElu
dDEyOCB7ZXBvY2hNaWxsaXNlY29uZHN9ICogRXhhY3RUaW1lOjpuc1Blck1pbGxpc2Vjb25kKTsK
KyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWljcm9zZWNv
bmRzKGludDY0X3QgZXBvY2hNaWNyb3NlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhh
Y3RUaW1lKEludDEyOCB7ZXBvY2hNaWNyb3NlY29uZHN9ICogRXhhY3RUaW1lOjpuc1Blck1pY3Jv
c2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIEV4YWN0VGltZSBmcm9tSVNPUGFydHNBbmRPZmZz
ZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25l
ZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVk
IG5zLCBpbnQ2NF90IG9mZnNldCk7CisKKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaFNlY29u
ZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6
Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgY29uc3RleHByIGludDY0X3QgZXBvY2hNaWxsaXNl
Y29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRp
bWU6Om5zUGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9j
aE1pY3Jvc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAv
IEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhwciBJbnQx
MjggZXBvY2hOYW5vc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBj
b25zdGV4cHIgaW50IG5hbm9zZWNvbmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpu
c1BlclNlY29uZCk7CisgICAgfQorCisgICAgU3RyaW5nIHByaW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vj
b25kcyA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAg
ICBwcmludEltcGwoYnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcHJpbnRJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxp
ZEVwb2NoTmFub3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vj
b25kcworICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBv
Y2hOYW5vc2Vjb25kcyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwor
ICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9l
cG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4
YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3Nl
Y29uZHMgPT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2Vwb2NoTmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAg
IH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9j
aE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RU
aW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25k
cyA+IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFs
PEV4YWN0VGltZT4gYWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShF
eGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpIGNvbnN0OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRl
bXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEludDEyOCBkYXlSYW5nZVNlY29uZHMgezg2NDAwJzAwMDAwMDAwfTsgLy8gMWU4
IGRheXMKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1pY3Jvc2Vjb25kIHsxMDAw
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1pbGxpc2Vjb25kIHsxJzAwMCcw
MDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsxJzAwMCcwMDAn
MDAwfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1pbnV0ZSA9IG5zUGVyU2Vj
b25kICogNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJIb3VyID0gbnNQZXJN
aW51dGUgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBtaW5WYWx1ZSA9IC1kYXlS
YW5nZVNlY29uZHMgKiBuc1BlclNlY29uZDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBt
YXhWYWx1ZSA9IGRheVJhbmdlU2Vjb25kcyAqIG5zUGVyU2Vjb25kOworCisgICAgc3RhdGljIHZv
aWQgcHJpbnRJbXBsKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEludDEyOCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIGlmICh2YWx1ZSA+IDkpCisgICAgICAgICAgICBwcmludEltcGwoYnVpbGRlciwg
dmFsdWUgLyAxMCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2YWx1ZSAlIDEwKSArICcwJyk7CisgICAgfQorCisgICAgc3RhdGljIEludDEyOCByb3VuZChJ
bnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpOworCisgICAgSW50MTI4IG1fZXBvY2hOYW5vc2Vjb25kcyB7IH07Cit9OworCiBjbGFz
cyBQbGFpblRpbWUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFBsYWluVGltZSk7CiBw
dWJsaWM6CkBAIC0xNjYsNSArMjg1LDcgQEAgU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBs
YWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24KIAogYm9v
bCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mKTsKIAorc3RkOjpvcHRpb25hbDxFeGFj
dFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdWaWV3KTsKKwogfSAvLyBuYW1lc3BhY2UgSVNPODYw
MQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDQ2MDQzYmJmMDIyOThkYzU2MWE4MzYyZGEz
ZjM0ZWMzOWQxMDEzMzguLmMzOWJjNjllYjliYmM4MDVkZGZkOGIyNjk0NjhkNGY0MWRiYjNhNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5oCkBAIC05NSw2ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBVRGF0ZUludGVydmFsRm9y
bWF0KiBjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeShKU0dsb2JhbE9iamVjdCop
OwogCisgICAgc3RhdGljIGRvdWJsZSBoYW5kbGVEYXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKICAgICBlbnVtIGNsYXNzIFdlZWtkYXkgOiB1aW50OF90IHsgTm9uZSwg
TmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgRXJhIDogdWludDhfdCB7IE5v
bmUsIE5hcnJvdywgU2hvcnQsIExvbmcgfTsKICAgICBlbnVtIGNsYXNzIFllYXIgOiB1aW50OF90
IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDc1ODRjZjBjZmIxMjllYmNmOGFiZjQ1M2YzZWJlYWY0Yjk3MWNmM2IuLjc4Yzg1YmVjN2Iw
YWE1MzVmNTQxZTNiZjU0Yjk5MjdiNzlhZWNmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdElubGluZXMu
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTAsNiArOTEsMjcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KICAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAor
Ly8gSGFuZGxlRGF0ZVRpbWVWYWx1ZSAoIGRhdGVUaW1lRm9ybWF0LCB4ICkKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWhhbmRsZWRhdGV0aW1ldmFs
dWUKK2RvdWJsZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB4KQoreworICAgIGlmICh4LmlzVW5kZWZp
bmVkKCkpCisgICAgICAgIHJldHVybiBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICAvLyBGSVhNRToK
KyAgICAvLyAgLSBBZGQgYWxsIG9mIHRoZSBvdGhlciBUZW1wb3JhbCB0eXBlcworICAgIC8vICAt
IFdvcmsgaW4gZXBvY2ggbmFub3NlY29uZHMKKyAgICAvLyAgLSBSZXR1cm4gVURhdGVGb3JtYXQg
YW5kIFVEYXRlSW50ZXJ2YWxGb3JtYXQgZGVwZW5kaW5nIG9uIHRoZSB0eXBlCisgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
eCk7CisgICAgaWYgKGluc3RhbnQpCisgICAgICAgIHJldHVybiBpbnN0YW50LT5leGFjdFRpbWUo
KS5lcG9jaE1pbGxpc2Vjb25kcygpOworCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgV1RGOjp0aW1lQ2xpcCh4
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpKTsKK30KKwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xMDAsMTQgKzEyMiw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2JhbE9iamVj
dCoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChk
YXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUpKSk7CiB9CkBAIC0xNTYsMTQgKzE3Miw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xv
YmFsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFs
dWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVO
b3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFs
dWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAg
ICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRp
bWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KQEAgLTE4
NSw5ICsxOTUsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYgogICAgIGlmIChzdGFydERhdGVW
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRl
IG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBz
dGFydERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERh
dGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0
LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICBkb3VibGUgZW5kRGF0ZSA9IGVuZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgIGRvdWJsZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGlt
ZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBp
cyBsYXJnZXIgdGhhbiBlbmREYXRlIl9zKTsKQEAgLTIxMiw5ICsyMjIsOSBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdl
VG9QYXJ0cywgKEpTRwogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVu
ZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVk
Il9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBzdGFydERhdGVWYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBkb3VibGUgZW5kRGF0ZSA9IGVu
ZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBlbmREYXRlID0g
SW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5k
RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlm
IChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhhbiBlbmREYXRlIl9z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAxNzRi
MGY4YWU3ZmVkYmIzMjQzZjQ0YWVkZTU0MzBjYmYyZjI0MWIyLi40YjU5NmMyN2E2YjM0YTIxYjk5
NDk3YzE0NzlmY2Y3NjhkNTA4MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5j
bHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMjMxLDYgKzIzMiw2MiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRfdCB2YWx1ZSkKICAgICBy
ZXR1cm4gY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZFZhbHVlLCBzaWduKTsK
IH0KIAorSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEludDEyOCB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVaZXJvKGds
b2JhbE9iamVjdCkpOworCisgICAgVUludDEyOCB1bnNpZ25lZFZhbHVlOworICAgIGJvb2wgc2ln
biA9IGZhbHNlOworICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9
IHN0YXRpY19jYXN0PFVJbnQxMjg+KC0odmFsdWUgKyAxKSkgKyAxOworICAgICAgICBzaWduID0g
dHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9IHZhbHVlOworCisgICAg
aWYgKHVuc2lnbmVkVmFsdWUgPD0gVUlOVDY0X01BWCkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBjcmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih1bnNpZ25lZFZhbHVlKSwgc2lnbikpOworCisgICAgaWYgY29uc3RleHByIChzaXplb2Yo
RGlnaXQpID09IDgpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5n
dGgoZ2xvYmFsT2JqZWN0LCAyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSkpOworICAgICAgICBEaWdpdCBoaWdo
Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworCisgICAgICAgIEFTU0VSVChoaWdoQml0cyk7CisKKyAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBsb3dCaXRzKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgxLCBo
aWdoQml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICB9CisKKyAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9PSA0KTsKKworICAg
IERpZ2l0IGRpZ2l0MCA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dW5zaWduZWRWYWx1ZSkpOworICAgIERpZ2l0IGRpZ2l0MSA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiAzMikpOworICAgIERpZ2l0IGRp
Z2l0MiA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworICAgIERpZ2l0IGRpZ2l0MyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0
aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiA5NikpOworCisgICAgQVNTRVJUKGRp
Z2l0MiB8fCBkaWdpdDMpOworCisgICAgaW50IGxlbmd0aCA9IGRpZ2l0MyA/IDQgOiAzOworICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgbGVuZ3Ro
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGJpZ0lu
dC0+c2V0RGlnaXQoMCwgZGlnaXQwKTsKKyAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGRpZ2l0MSk7
CisgICAgYmlnSW50LT5zZXREaWdpdCgyLCBkaWdpdDIpOworICAgIGlmIChkaWdpdDMpCisgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMywgZGlnaXQzKTsKKyAgICBiaWdJbnQtPnNldFNpZ24oc2ln
bik7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVG
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3OC4u
ODhmM2MzOTAzOTkxMjJlMjM3YWUyYTE4NjExNjMzYjZkYTY3OTRjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2Vk
VW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCB2
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9t
KEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCB2YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgdmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShK
U0dsb2JhbE9iamVjdCosIEludDEyOCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKTsKIApAQCAtNjA1LDgg
KzYwNyw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDY0
X3QgdG9CaWdVSW50NjRIZWFwKEpTQmlnSW50Kik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VaW50NjRIZWFwKEpTQmlnSW50Kik7Ci0K
ICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZzZXRPZkRhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JpZ0ludCwgbV9kYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZGFlOWIzYTliYzkyZmJhZmQ0
ZTMwMTk0YjRkMWE4ZDgzZGJkMmNmZi4uNTIxOWY4ZjcyNDJiODZmOTQwZTgyODIzNTg0ZTYxZmUy
YmE0OWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5j
cHAKQEAgLTI2OSwxMSArMjY5LDYgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVDYWNoZTo6bG9jYWxU
aW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gsIFdURjo6VGkKICAgICByZXR1
cm4gb2Zmc2V0OwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91
ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQotewotICAgIHJldHVybiAoKCho
b3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUg
KyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKLX0KLQogZG91YmxlIERhdGVDYWNoZTo6
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3VibGUg
bWlsbGlzZWNvbmRzLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CiAgICAgZG91Ymxl
IGRheSA9IGRhdGVUb0RheXNGcm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgpLCB0Lm1vbnRoRGF5
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDA2ZjY1M2VjYmY4NGIzNzhhN2IzY2FlYWQyNDM0Njk4ODk1MjdmMjAuLmI1NTU1
OTU1ODc1MzQ3NjFkYzJhMzdhODdhMjVjNDFiNjI1MDllZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNSw2ICsyMDUsOCBA
QAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgpA
QCAtMTIzNCw2ICsxMjM2LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAg
ICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisg
ICAgICAgIG1faW5zdGFudFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQ
cm90b3R5cGUgPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBp
bml0LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIGluc3RhbnRQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1f
cGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0
aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTI4LDYg
KzIxMzcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbnN0YW50U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2ODBlOWRmNjE4OTIuLmVkNWM1
ZjhkMjkzNzJlOWM3MmYzZTFmNTJiZWUxYzMxZmZhYTQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIHB1
YmxpYzoKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2Nh
bGVuZGFyU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2luc3RhbnRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCkBA
IC04NzcsNiArODc4LDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4g
bV9pbnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGxhaW5UaW1l
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggZmI2MDc0Y2I4NTg0ZjljYzgwYWFiN2UyYjQx
MWFmNjBkMmIxZjBkNi4uMDA5OWUyZWY5ZDYwZjA0OTIyYTdkNjQ4ODYyMDJkNmY1YmJiNDRiOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTg4LDIwICs4OSwyMCBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0
aW9uOjpmcm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAg
SVNPODYwMTo6RHVyYXRpb24gcmVzdWx0OwogICAgIGF1dG8gaGFzUmVsZXZhbnRQcm9wZXJ0eSA9
IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRz
OyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0KGdsb2Jh
bE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCBzdGF0aWNfY2FzdDxUZW1wb3Jh
bFVuaXQ+KGkpKSk7CisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IHRlbXBvcmFsVW5pdHNJ
blRhYmxlT3JkZXIpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0
KGdsb2JhbE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCB1bml0KSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdFtpXSA9IDA7CisgICAgICAgICAg
ICByZXN1bHRbdW5pdF0gPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAog
ICAgICAgICBoYXNSZWxldmFudFByb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0W2ldID0g
dmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmVzdWx0W3VuaXRdID0gdmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgICAgICBpZiAoIWlzSW50ZWdlcihyZXN1bHRbaV0pKSB7CisgICAg
ICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0XSkpIHsKICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGll
cyBtdXN0IGJlIGludGVnZXJzIl9zKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KQEAgLTE2NCw2ICsxNjUsMzEgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlv
bjo6dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICByZXR1
cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3Ry
dWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKKy8vIFRvTGltaXRlZFRlbXBvcmFsRHVy
YXRpb24gKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgZGlzYWxsb3dlZEZpZWxkcyApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b2xpbWl0ZWR0ZW1w
b3JhbGR1cmF0aW9uCitjb25zdCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjp0
b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0
ZW1WYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVu
aXRzKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJh
dGlvbiA9IHRvSVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFpc1ZhbGlkRHVyYXRp
b24oZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2Yg
Y29uc2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBm
b3IgKFRlbXBvcmFsVW5pdCB1bml0IDogZGlzYWxsb3dlZFVuaXRzKSB7CisgICAgICAgIGlmIChk
dXJhdGlvblt1bml0XSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIG1ha2VTdHJpbmcoIkFkZGluZyAiX3MsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFt
ZSh2bSwgdW5pdCkucHVibGljTmFtZSgpLCAicyBub3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLklu
c3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247
Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjMwLDIwICsyNTYsMjAgQEAgSVNPODYwMTo6RHVyYXRp
b24gVGVtcG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCoKIAogICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGhhc1Jl
bGV2YW50UHJvcGVydHkgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mVGVtcG9yYWxVbml0czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlv
bkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwgc3Rh
dGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpKSkpOworICAgIGZvciAoVGVtcG9yYWxVbml0IHVuaXQg
OiB0ZW1wb3JhbFVuaXRzSW5UYWJsZU9yZGVyKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBk
dXJhdGlvbkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2
bSwgdW5pdCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0g
PSBtX2R1cmF0aW9uW2ldOworICAgICAgICAgICAgcmVzdWx0W3VuaXRdID0gbV9kdXJhdGlvblt1
bml0XTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaGFzUmVs
ZXZhbnRQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdFtpXSA9IHZhbHVlLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJlc3VsdFt1bml0XSA9IHZhbHVlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
LSAgICAgICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W2ldKSkgeworICAgICAgICBpZiAoIWlzSW50
ZWdlcihyZXN1bHRbdW5pdF0pKSB7CiAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBpbnRl
Z2VycyJfcyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggODJmMmQ1
ZDY1YzIyYWM0YzQwN2M4NjM0MzQyZmY2NjljYTBhMTg5Ni4uZWJlMjczMmEzNWZjYmIzZjg3YWU4
ODEzZTcwYWUzZGI5ODQ4NTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb24uaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgREVD
TEFSRV9JTkZPOwogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIHRvVGVtcG9yYWxEdXJh
dGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBjb25zdCBJU084NjAx
OjpEdXJhdGlvbiB0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiAgICAg
c3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
ICAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjOGUzYzg2MWZiNjgwMmI4MjNkYWIwYjhiMjZkNTI3YjRh
NmEwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnQuY3BwCkBAIC0wLDAgKzEsNDI1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAi
SVNPODYwMS5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50OjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRl
bXBvcmFsSW5zdGFudCkgfTsKKworU3RydWN0dXJlKiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworVGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhhY3RUaW1lKGV4YWN0VGltZSkKK3sKK30K
Kwordm9pZCBUZW1wb3JhbEluc3RhbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKK30KKworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1l
KQoreworICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnQ+KHZtLmhlYXApKSBU
ZW1wb3JhbEluc3RhbnQodm0sIHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCisvLyBDcmVhdGVUZW1w
b3JhbEluc3RhbnQgKCBlcG9jaE5hbm9zZWNvbmRzIFsgLCBuZXdUYXJnZXQgXSApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3Jh
bGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElTTzg2MDE6OkV4YWN0VGlt
ZSBleGFjdFRpbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZXhhY3RUaW1lLnByaW50KCksICIg
ZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBv
cmFsLkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
cmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5p
bnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTmFub3NlY29uZHMgPSB2YWx1ZS50b0JpZ0ludChn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTmFub3NlY29uZHMpOworICAg
IEludDEyOCBsb3cge2JpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDB9
OworICAgIEludDEyOCBoaWdoIHtiaWdpbnQtPmxlbmd0aCgpID4gMSA/IGJpZ2ludC0+ZGlnaXQo
MSkgOiAwfTsKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsoaGlnaCA8PCA2NCB8
IGxvdykgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6IDEpfTsKKworICAgIGlmIChiaWdpbnQtPmxl
bmd0aCgpID4gMiB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgYXJn
QXNTdHJpbmcge2JpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCl9OworICAgICAgICBp
ZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2ggbmFub3Nl
Y29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0
YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBj
cmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0
cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1RlbXBvcmFsSW5zdGFudCAoIGl0ZW0g
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90
ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0b0luc3Rh
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJ
bnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRl
bVZhbHVlKTsKKworICAgIC8vIFRPRE86IHdoZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5k
cworICAgIC8vIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2
bSkpCisgICAgLy8gICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+
KGl0ZW1WYWx1ZSktPmVwb2NoVGltZSgpKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworICAgIGF1dG8gcGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFy
c2VJbnN0YW50KHN0cmluZyk7CisgICAgaWYgKCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVs
bGlwc2l6ZUF0KDEwMCwgc3RyaW5nKSwgIicgaXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFu
dCBzdHJpbmciX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFy
c2VkRXhhY3RUaW1lLnZhbHVlKCkpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICgg
aXRlbSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC5pbnN0YW50LmZyb20KK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8
VGVtcG9yYWxJbnN0YW50Pih2bSkpIHsKKyAgICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0
VGltZSA9IGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpLT5tX2V4YWN0VGltZTsK
KyAgICAgICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
Pmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9J
bnN0YW50KGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzICggZXBvY2hTZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25k
c1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAo
IWlzSW50ZWdlcihlcG9jaFNlY29uZHMpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxp
ZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084
NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaFNlY29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFj
dFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMg
KCBlcG9jaE1pbGxpc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJ
bnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2No
TWlsbGlzZWNvbmRzVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAg
MQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2NoTWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vj
b25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29u
ZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6
RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlz
ZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0
YW50LmZyb21lcG9jaG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRv
QmlnSW50KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9z
ZWNvbmRzKTsKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhh
Y3RUaW1lOjpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNCaWdJbnQ6OnRvQmlnVUludDY0KGJpZ2lu
dCkpOworICAgIGlmIChiaWdpbnQtPmxlbmd0aCgpID4gMSB8fCAhZXhhY3RUaW1lLmlzVmFsaWQo
KSkgeworICAgICAgICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2Jh
bE9iamVjdCwgMTApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJU
aGUgZ2l2ZW4gbnVtYmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdB
c1N0cmluZyksICIgZXBvY2ggbWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJh
bmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVj
dHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5h
bm9zZWNvbmRzICggZXBvY2hOYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG5hbm9zZWNvbmRzCitU
ZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTmFub3NlY29uZHMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzVmFsdWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGVwb2NoTmFub3NlY29uZHNWYWx1ZSkpOwor
fQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUgKCBvbmUsIHR3byApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmNvbXBhcmUK
K0pTVmFsdWUgVGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb25lVmFsdWUsIEpTVmFsdWUgdHdvVmFsdWUpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb25lID0gdG9JbnN0YW50KGdsb2JhbE9i
amVjdCwgb25lVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIHR3byA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIHR3b1Zh
bHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9u
ZS0+ZXhhY3RUaW1lKCkgPiB0d28tPmV4YWN0VGltZSgpKQorICAgICAgICByZXR1cm4ganNOdW1i
ZXIoMSk7CisgICAgaWYgKG9uZS0+ZXhhY3RUaW1lKCkgPCB0d28tPmV4YWN0VGltZSgpKQorICAg
ICAgICByZXR1cm4ganNOdW1iZXIoLTEpOworICAgIHJldHVybiBqc051bWJlcigwKTsKK30KKwor
Y29uc3QgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFsSW5zdGFudCogb3RoZXIsIEpTVmFsdWUg
b3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVj
dCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1Zh
bHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBz
bWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5p
dCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNv
bmQpOworCisgICAgVGVtcG9yYWxVbml0IGRlZmF1bHRMYXJnZXN0VW5pdCA9IHN0ZDo6bWluKHNt
YWxsZXN0VW5pdCwgVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAgIGF1dG8gbGFyZ2VzdCA9IHRl
bXBvcmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0sIGRlZmF1bHRMYXJn
ZXN0VW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1w
b3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRMYXJnZXN0VW5p
dCk7CisKKyAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8IGxhcmdlc3Qp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVz
dFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3Jh
bFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gbWF4SW5jcmVtZW50ID0gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxs
ZXN0VW5pdCk7CisgICAgQVNTRVJUKG1heEluY3JlbWVudCAmJiAqbWF4SW5jcmVtZW50IDw9IDEw
MDApOyAvLyB1bmJvdW5kZWQgaW5jcmVtZW50cyBhcmUgaW1wb3NzaWJsZSB3aXRoIFRlbXBvcmFs
Lkluc3RhbnQKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVt
ZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4SW5jcmVtZW50LCBmYWxzZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludDEyOCByb3VuZGVkRGlmZiA9
IG1fZXhhY3RUaW1lLmRpZmZlcmVuY2Uob3RoZXItPm1fZXhhY3RUaW1lLCBpbmNyZW1lbnQsIHNt
YWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICAvLyBOT1RFOiBEdXJhdGlvbiBmaWVsZHMg
YXJlIGN1cnJlbnRseSBkb3VibGVzLCBhbmQgdGhlIHRvdGFsIG51bWJlciBvZgorICAgIC8vIG5h
bm9zZWNvbmRzIG1heSBub3QgZml0IGluIGEgZG91YmxlLiBUaGlzIG1heSBuZWVkIHRvIGNoYW5n
ZSBpZiB0aGUKKyAgICAvLyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBEdXJhdGlvbiBjaGFu
Z2VzLgorICAgIEFTU0VSVChyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcwMDAgPCBJTlQ2NF9NQVgp
OworICAgIGRvdWJsZSBzZWNvbmRzIHtzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJvdW5kZWREaWZmIC8gMScwMDAnMDAwJzAwMCkpfTsKKyAgICBkb3VibGUgbmFub3Nl
Y29uZHNSZW1haW5kZXIge3N0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cm91bmRlZERpZmYgJSAxJzAwMCcwMDAnMDAwKSl9OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJl
c3VsdCB7MCwgMCwgMCwgMCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5k
ZXJ9OworCisgICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgZG91YmxlIG1heGltdW1JbmNyZW1l
bnQoVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCkKK3sKKyAgICBzd2l0Y2ggKHNtYWxsZXN0VW5p
dCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiByZXR1cm4gMjQ7CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogcmV0dXJuIDE0NDA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6
OlNlY29uZDogcmV0dXJuIDg2NDAwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29u
ZDogcmV0dXJuIDguNjRlNzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHJl
dHVybiA4LjY0ZTEwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiByZXR1cm4g
OC42NGUxMzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6WWVhcjoKKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6TW9udGg6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OldlZWs6CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6OkRheToKKyAgICBkZWZhdWx0OgorICAgICAgICB7IH0KKyAgICB9CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgSVNPODYwMTo6RXhhY3RUaW1l
IFRlbXBvcmFsSW5zdGFudDo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBh
dXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0
OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RV
bml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlbXBvcmFs
VW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9z
ZWNvbmQpOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRp
bmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGluY3Jl
bWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBt
YXhpbXVtSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIHRydWUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gbV9leGFjdFRpbWUucm91bmQoaW5jcmVt
ZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnRvU3RyaW5nKCBbIG9wdGlvbnMgXSApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LnByb3RvdHlwZS50b3N0cmlu
ZworU3RyaW5nIFRlbXBvcmFsSW5zdGFudDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiB0b1N0cmluZygpOworCisg
ICAgSlNPYmplY3QqIHRpbWVab25lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHRpbWVab25lVmFs
dWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9u
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIXRpbWVa
b25lVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aW1lWm9uZSA9IFRlbXBvcmFsVGlt
ZVpvbmU6OmZyb20oZ2xvYmFsT2JqZWN0LCB0aW1lWm9uZVZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICBQcmVjaXNpb25EYXRhIGRh
dGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJvdW5kaW5nTW9kZSByb3Vu
ZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJv
dW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4g
ZXhwbGljaXQgZGVmYXVsdHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9
PSBQcmVjaXNpb246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMp
CisgICAgICAgIHJldHVybiB0b1N0cmluZyh0aW1lWm9uZSk7CisKKyAgICBJU084NjAxOjpFeGFj
dFRpbWUgbmV3RXhhY3RUaW1lIHttX2V4YWN0VGltZS5yb3VuZChkYXRhLmluY3JlbWVudCwgZGF0
YS51bml0LCByb3VuZGluZ01vZGUpfTsKKworICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMg
b24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJlICEgQ3JlYXRlVGVt
cG9yYWxJbnN0YW50KHJvdW5kZWROcykuCisgICAgLy8gLi4uCisgICAgLy8gMS4gSWYgX291dHB1
dFRpbWVab25lXyBpcyAqdW5kZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4gU2V0IF9vdXRwdXRU
aW1lWm9uZV8gdG8gISBDcmVhdGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiopLgorICAgIC8vIDEu
IExldCBfaXNvQ2FsZW5kYXJfIGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCkuCisgICAgLy8gMS4g
TGV0IF9kYXRlVGltZV8gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRhdGVUaW1lRm9yKF9v
dXRwdXRUaW1lWm9uZV8sIF9pbnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisgICAgSlNPYmplY3Qq
IG91dHB1dFRpbWVab25lID0gdGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRpbWVab25lKSB7Cisg
ICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6IFRlbXBvcmFs
Lkluc3RhbnQudG9TdHJpbmcoe3RpbWVab25lfSkgbm90IGltcGxlbWVudGVkIHlldCJfcyk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nKG5ld0V4YWN0
VGltZSwgdGltZVpvbmUsIGRhdGEpOworfQorCisvLyBUZW1wb3JhbEluc3RhbnRUb1N0cmluZyAo
IGluc3RhbnQsIHRpbWVab25lLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9zdHJpbmcKK1N0cmlu
ZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSBleGFj
dFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7Cisg
ICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRpbWUge3N0YXRpY19jYXN0PGRvdWJs
ZT4oZXhhY3RUaW1lLmVwb2NoTWlsbGlzZWNvbmRzKCkpLCBMb2NhbFRpbWVPZmZzZXQgeyB9fTsK
KworICAgIC8vIE1heGltdW0gYW1vdW50IG9mIHNwYWNlIHdlIG5lZWQgaW4gdGhlIHNpbXBsZSBm
b3JtYXR0aW5nIGJ1ZmZlcjoKKyAgICAvLyA3IChtYXguIGRpZ2l0cyBpbiB5ZWFyKQorICAgIC8v
ICsgMyAqIDQgKDIgZGlnaXRzIGFuZCAxIHNlcGFyYXRvciBlYWNoIGZvciBtb250aCwgZGF5LCBo
b3VyLCBtaW51dGUpCisgICAgLy8gKyAxIGZvciBudWxsIHRlcm1pbmF0aW9uID0gMjAuCisgICAg
Y2hhciBidWZmZXJbMjBdOworICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5k
cyBvZiAwIGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvIHVzZQorICAgIC8vIHRoZSBleHRl
bmRlZCB5ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisgICAgaW50IGNoYXJhY3RlcnNXcml0dGVu
OworICAgIGlmIChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPiA5OTk5IHx8IGdyZWdvcmlhbkRh
dGVUaW1lLnllYXIoKSA8IDEwMDApCisgICAgICAgIGNoYXJhY3RlcnNXcml0dGVuID0gc25wcmlu
dGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUrMDdkLSUwMmQtJTAyZFQlMDJkOiUwMmQiLCBn
cmVnb3JpYW5EYXRlVGltZS55ZWFyKCksIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoKCkgKyAxLCBn
cmVnb3JpYW5EYXRlVGltZS5tb250aERheSgpLCBncmVnb3JpYW5EYXRlVGltZS5ob3VyKCksIGdy
ZWdvcmlhbkRhdGVUaW1lLm1pbnV0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGNoYXJhY3RlcnNX
cml0dGVuID0gc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUwNGQtJTAyZC0lMDJk
VCUwMmQ6JTAyZCIsIGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUu
bW9udGgoKSArIDEsIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoRGF5KCksIGdyZWdvcmlhbkRhdGVU
aW1lLmhvdXIoKSwgZ3JlZ29yaWFuRGF0ZVRpbWUubWludXRlKCkpOworICAgIEFTU0VSVChjaGFy
YWN0ZXJzV3JpdHRlbiA+IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcnNXcml0
dGVuKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNo
YXJhY3RlcnNXcml0dGVuKSA+PSBzaXplb2YoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuICIiX3M7
CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoYnVmZmVy
KTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG5zUGVyU2Vjb25kIHsxJzAwMCcwMDAnMDAw
fTsKKyAgICBpbnQgZnJhY3Rpb24ge2V4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0aW9uKCl9Owor
ICAgIGlmIChmcmFjdGlvbiA8IDApCisgICAgICAgIGZyYWN0aW9uICs9IG5zUGVyU2Vjb25kOwor
CisgICAgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoYnVpbGRlciwgZ3JlZ29yaWFuRGF0ZVRpbWUu
c2Vjb25kKCksIGZyYWN0aW9uLCBwcmVjaXNpb24pOworCisgICAgaWYgKHRpbWVab25lKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgICAgIC8v
ICAgMS4gTGV0IF90aW1lWm9uZVN0cmluZ18gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRPZmZzZXRT
dHJpbmdGb3IoX3RpbWVab25lXywgX2luc3RhbnRfKS4KKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
J1onKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKKworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMmU3NGM4MzFlMGUzMDJjNjYxZGFhZmQyZGUyMGJjYWIwZGY2OGZkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1w
b3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBUZW1wb3JhbEluc3RhbnQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS50ZW1w
b3JhbEluc3RhbnRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbElu
c3RhbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSk7
CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9i
amVjdCosIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSwgU3RydWN0dXJlKiA9IG51bGxwdHIpOwor
ICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRvSW5zdGFudChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZy
b20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50
KiBmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGlj
IFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWljcm9zZWNv
bmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFu
dCogZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7
CisKKyAgICBjb25zdGV4cHIgY29uc3QgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXhhY3RUaW1lOyB9CisKKyAgICBjb25zdCBJU084NjAxOjpEdXJhdGlv
biBkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiwgVGVtcG9yYWxJbnN0YW50KiwgSlNWYWx1ZSBv
cHRpb25zKSBjb25zdDsKKyAgICBjb25zdCBJU084NjAxOjpFeGFjdFRpbWUgcm91bmQoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3Ry
aW5nKEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHIsIFByZWNpc2lvbkRhdGEgcHJlY2lzaW9u
ID0geyB7IFByZWNpc2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEg
fSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0b1N0cmluZyhtX2V4YWN0VGltZSwgdGlt
ZVpvbmUsIHByZWNpc2lvbik7CisgICAgfQorCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFu
dChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElTTzg2MDE6OkV4YWN0VGltZSk7CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBhcnNlKFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgY29uc3QgSVNP
ODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwor
CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBJU084NjAxOjpFeGFjdFRpbWUsIEpT
T2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7CisKKyAgICBJU084NjAxOjpFeGFjdFRp
bWUgbV9leGFjdFRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NWUzZGQ5MzdmZDc4ZWNiM2E5ZDRlZjhjZWFmNjEzNTczYTI0
MThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
KTsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jRnJvbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21F
cG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoTmFub3NlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSk7CisKK30KKworI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
KSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oCitA
YmVnaW4gdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JUYWJsZQorICBmcm9tICAgICAgICAgICAg
ICAgICAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hTZWNvbmRzICAgICAgIHRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBmcm9tRXBvY2hNaWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yRnVuY0Zyb21FcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9t
RXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9j
aE1pY3Jvc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hOYW5vc2Vjb25k
cyAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBjb21wYXJlICAgICAgICAgICAgICAgIHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IqIFRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIGF1dG8qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGluc3RhbnRQcm90b3R5
cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxG
dW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsSW5zdGFudCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpOworCitUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBv
cmFsSW5zdGFudCwgY29uc3RydWN0VGVtcG9yYWxJbnN0YW50KQoreworfQorCit2b2lkIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgMCwgIkluc3RhbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgaW5zdGFudFByb3RvdHlwZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIGluc3RhbnRQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VU
X0RFUklWRURfU1RSVUNUVVJFKHZtLCBpbnN0YW50U3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNaXNzaW5nIHJlcXVpcmVk
IGVwb2NoTmFub3NlY29uZHMgYXJndW1lbnQgdG8gVGVtcG9yYWwuSW5zdGFudCJfcyk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3Rh
bnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLCBzdHJ1Y3R1cmUpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihj
YWxsVGVtcG9yYWxJbnN0YW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW5zdGFudCIpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNl
Y29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBv
Y2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODdkOWRlMzIwMWIy
YzgzYWYzZGVkZTJhMjE4OTVhOGYyZjY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTsKKworY2xhc3MgVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKK307CitTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDcxMjRjMjYwNzNiMTkwNGRjMzdiYjY1YzQ1MWZmNTY2ZGYxYTlm
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSVNPODYw
MS5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNBZGQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1JvdW5kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNFcXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04pOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1RvTG9jYWxlU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25kcyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVH
ZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0
ZXJFcG9jaE5hbm9zZWNvbmRzKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuSW5zdGFudCIsICZCYXNl
OjpzX2luZm8sICZpbnN0YW50UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGluc3RhbnRQcm90b3R5cGVUYWJsZQor
ICBhZGQgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3QgICAgICAgICAgIHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIHVudGlsICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVW50aWwgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5jZSAgICAg
ICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IGVxdWFscyAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgICAgdGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdG9KU09OICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNUb0pTT04gICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvTG9jYWxlU3Ry
aW5nICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAg
ZXBvY2hTZWNvbmRzICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vj
b25kcyAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE1pbGxp
c2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWljcm9zZWNvbmRzICB0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyAgRG9udEVudW18
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hOYW5vc2Vjb25kcyAgIHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxSZWFkT25seXxD
dXN0b21BY2Nlc3NvcgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQoreworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitzdGF0aWMgY29uc3RleHByIHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzID0geworICAg
IFRlbXBvcmFsVW5pdDo6WWVhciwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1vbnRoLAorICAgIFRlbXBv
cmFsVW5pdDo6V2VlaywKKyAgICBUZW1wb3JhbFVuaXQ6OkRheSwKK307CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uIGR1
cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUo
KS5hZGQoZHVyYXRpb24pOworICAgIGlmICghbmV3RXhhY3RUaW1lKSB7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lkZSBvZiBz
dXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50
Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRy
YWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zdWJ0cmFj
dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgY29uc3Qg
SVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWRE
dXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRB
ZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9
IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZCgtZHVyYXRpb24pOworICAgIGlmICghbmV3RXhhY3RU
aW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3Vi
dHJhY3Rpb24gaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3Rh
bnQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
Km5ld0V4YWN0VGltZSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQi
X3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9J
bnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5zdGFu
dC0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1
cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJbnN0
YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRpb25z
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQg
PSBvdGhlci0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlv
blN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0
YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisg
ICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVh
bHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJ
bnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQtPmV4
YWN0VGltZSgpID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJp
bmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRv
U3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5z
dGFudC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRv
SlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3Rh
bnQtPnRvU3RyaW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBhIEpT
QnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5z
dGFudCJfcyk7CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxEYXRl
VGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBmb3Jt
YXR0ZXItPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGltZUZv
cm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5zdGFu
dC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8g
Y29tcGFyZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfcyk7
Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVH
ZXR0ZXJFcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3Rh
bnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKworSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2No
TWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFu
dCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOworfQor
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVy
RXBvY2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3Rh
bnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQz
MihnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRzKCkp
KSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFs
T2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIxNDY5
ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmpl
Y3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IDgzY2Q1ZGIwZDkzZDBhYmY5YzJhZWFh
NDk1N2U5MjllOTg4YzQ2ZDIuLjFlYTJiNGYxMzkxNGM3ZjZlNTkwMjI3OGM5NTFjZTRhMGRhMzU2
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKQEAgLTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFy
YWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVE
dXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4g
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
Kj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmpl
Y3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IoVk0m
IHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9i
amVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAg
IHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBl
T2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0
b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1w
b3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2ICs5
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAgQ2Fs
ZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9w
ZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3Ig
ICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVhdGVJ
bnN0YW50Q29uc3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93
ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9w
ZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9y
ICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVhdGVU
aW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAgLTM0
OSw2ICszNjAsMTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8vIEZv
cm1hdFNlY29uZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQs
IG5hbm9zZWNvbmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3JtYXRT
ZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNvbmQs
IHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBpZiAo
cHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVybjsK
KworICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAgZm9y
bWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24ucHJl
Y2lzaW9uKTsKK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVu
dCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtbWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkK
QEAgLTQxMCw2ICs0MzIsNDMgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91Ymxl
IHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQorewor
ICAgIHJldHVybiB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHdp
dGggSW50MTI4CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50MTI4
IGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9PSAx
KQorICAgICAgICByZXR1cm4geDsKKworICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNyZW1l
bnQ7CisgICAgSW50MTI4IHJlbWFpbmRlciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFyZW1h
aW5kZXIpCisgICAgICAgIHJldHVybiB4OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVyIDwg
MDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAg
ICAgICAgaWYgKCFzaWduKQorICAgICAgICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAgICAg
ICAgICAgIHF1b3RpZW50LS07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2Rl
OjpUcnVuYzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQ6CisgICAgICAgIC8vICJoYWxmIHVwIGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAoYWJz
KHJlbWFpbmRlciAqIDIpID49IGluY3JlbWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9IHNp
Z24gPyAtMSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGllbnQg
KiBpbmNyZW1lbnQ7Cit9CisKIFRlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAgIHJl
dHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
Z2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggYzRiMWQ0NzI2YjM0
NmQ1MTlhNTZmYWEzMjE2YmRmYzg4ZTk5MjE4My4uN2JhM2YxNGFjYzY1ZmM0NDE1NmEwN2Q0ZjYw
Mjg4N2IxMDEyNWU4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE9iamVjdC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTIsNiArNTMsMjAgQEAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9VTklU
UyhKU0NfQ09VTlQKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfQ09VTlRf
VEVNUE9SQUxfVU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUwogCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3RhYmxlLXRlbXBvcmFsLXRlbXBvcmFs
ZHVyYXRpb25saWtlLXByb3BlcnRpZXMKK3N0YXRpYyBjb25zdGV4cHIgVGVtcG9yYWxVbml0IHRl
bXBvcmFsVW5pdHNJblRhYmxlT3JkZXJbbnVtYmVyT2ZUZW1wb3JhbFVuaXRzXSA9IHsKKyAgICBU
ZW1wb3JhbFVuaXQ6OkRheSwKKyAgICBUZW1wb3JhbFVuaXQ6OkhvdXIsCisgICAgVGVtcG9yYWxV
bml0OjpNaWNyb3NlY29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLAorICAgIFRl
bXBvcmFsVW5pdDo6TWludXRlLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9y
YWxVbml0OjpOYW5vc2Vjb25kLAorICAgIFRlbXBvcmFsVW5pdDo6U2Vjb25kLAorICAgIFRlbXBv
cmFsVW5pdDo6V2VlaywKKyAgICBUZW1wb3JhbFVuaXQ6OlllYXIsCit9OworCiBjbGFzcyBUZW1w
b3JhbE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKQEAgLTEwMiw5ICsxMTcsMTEgQEAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdGVtcG9yYWxGcmFjdGlvbmFsU2Vjb25kRGlnaXRzKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QKIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lv
bihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFJvdW5kaW5nTW9kZSB0ZW1w
b3JhbFJvdW5kaW5nTW9kZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUm91bmRpbmdNb2Rl
KTsKIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImLCB1bnNp
Z25lZCBmcmFjdGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPik7Cit2b2lkIGZv
cm1hdFNlY29uZHNTdHJpbmdQYXJ0KFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBzZWNvbmQsIHVu
c2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhKTsKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
YXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJv
dW5kaW5nSW5jcmVtZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBkaXZpZGVuZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5k
TnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlLCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUp
OworSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4LCBJbnQxMjggaW5jcmVtZW50
LCBSb3VuZGluZ01vZGUpOwogCiBlbnVtIGNsYXNzIFRlbXBvcmFsT3ZlcmZsb3cgOiBib29sIHsK
ICAgICBDb25zdHJhaW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggOTk2
YTA2ZGFhYmE4MmNjZWZiNDNkZjNmNjVmMTMxZTZmZGU2ZWUwNy4uNDhmZDZjOWE2NjlmNTIyY2U0
NzNhMmEzNzIxNGQ4ZjY4YTY1NWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMTY0LDYgKzE2NCw3IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRp
bHMuaCIKQEAgLTE1OTEsNiArMTU5Miw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxD
YWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24p
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsSW5zdGFudCkKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1VpbnQ4QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA3YTU4YjI3
OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4Li5hYmEyZjY2YTA3YjM3YjE1YzU4NWEy
Zjg2ZjBiNmNlNGYyZjI4NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE4
Niw2ICsxODYsNyBAQCBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKIGNsYXNzIFN5bWJvbDsKIGNsYXNz
IFRlbXBvcmFsRHVyYXRpb247CitjbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFy
cmF5Q29udHJvbGxlcjsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRF
dmFsQ29kZUJsb2NrOwpAQCAtNTk3LDYgKzU5OCw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJh
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxJbnN0YW50U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0
ZW1wb3JhbFBsYWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4
ZWFiYTQ2NmI2ZTZjMGFkNjZkYzAyZjUyNTc0MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRlZTQ4NTUz
NjE3ZmNhMDZkOGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBAIC0zODgsNiArMzg4LDExIEBAIGlubGluZSBp
bnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikK
ICAgICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAKK2lubGluZSBkb3VibGUgdGltZVRvTVMoZG91Ymxl
IGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4g
KCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWlu
dXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Cit9CisKIC8vIFJldHVybnMgY29t
YmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklW
QVRFIExvY2FsVGltZU9mZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0lu
TWlsbGlzZWNvbmRzLCBUaW1lVHlwZSA9IFVUQ1RpbWUpOwogCkBAIC00MTAsNiArNDE1LDcgQEAg
dXNpbmcgV1RGOjptc1RvSG91cnM7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1c2luZyBX
VEY6OnNlY29uZHNQZXJNaW51dGU7CiB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZD
MjgyMkRhdGVTdHJpbmc7CiB1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6
Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50
MTI4LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaAppbmRleCA2NWZlODMyNDNhMjA4M2FjY2Zj
NjljMGM2MzVkNTZhODgwMzQ1NjQwLi44YTRkZjM0MGE4MjE0ODUxYTVjNTJiYTAzNjM5OGVlMmI4
MGE5Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9JbnQxMjguaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogbG93
XyB7c3RhdGljX2Nhc3Q8c3RkOjp1aW50NjRfdD4obil9CiAgICAgICAgICwgaGlnaF8gey1zdGF0
aWNfY2FzdDxzdGQ6OnVpbnQ2NF90PihuIDwgMCl9CiAgICAgeyB9CisgICAgY29uc3RleHByIElu
dDEyOEltcGwoY29uc3QgSW50MTI4SW1wbDwhSVNfU0lHTkVEPiBuKQorICAgICAgICA6IGxvd18g
e24ubG93KCl9LCBoaWdoXyB7bi5oaWdoKCl9IHsgfQogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBs
KGNvbnN0IEludDEyOEltcGwgJikgPSBkZWZhdWx0OwogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBs
KEludDEyOEltcGwgJiYpID0gZGVmYXVsdDsKICAgICBjb25zdGV4cHIgSW50MTI4SW1wbCAmb3Bl
cmF0b3I9KGNvbnN0IEludDEyOEltcGwgJikgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjZmU0MDk4MTc5Y2EwZmM0Njg0
OTNhMjBlZjRjMzE2YzAyYTkxOTM5Li4wNGRlOGE1OTE1NWEzNzQ5YzM1OTlhYmMyMzBjNGY5NzBh
YmNjYWYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA5LTIzICBQaGlsaXAgQ2hpbWVudG8gIDxwaGls
aXAuY2hpbWVudG9AZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3Jh
bC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZE5vdEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKGluc3RhbnRzLmZvckVhY2gpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LlRlbXBvcmFs
Lkluc3RhbnQpOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6IE5vIG5lZWQgdG8gaWdu
b3JlIGFsbCBUZW1wb3JhbC5JbnN0YW50IHRlc3RzCisgICAgICAgICAgYW55bW9yZSwgb25seSB0
aGUgb25lcyBmb3IgdGhlIHVuaW1wbGVtZW50ZWQgbWV0aG9kcy4KKwogMjAyMS0wOS0yMyAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gSGFu
ZGxlIHN5bnRhY3RpYyBwcm9kdWN0aW9uIGZvciBgI3ggaW4gZXhwcmAgY29ycmVjdGx5CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzIGIvSlNUZXN0cy9zdHJl
c3MvdGVtcG9yYWwtaW5zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTY4ZTdhMTYyNzEwYzJmODU1Mzgz
MjE3NjYzZGNhYTJiOWJkN2QzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVt
cG9yYWwtaW5zdGFudC5qcwpAQCAtMCwwICsxLDI5MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkTm90QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgPT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGEgdmFsdWUgdG8gYmUgZGlm
ZmVyZW50IGZyb20gJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3Nh
Z2UgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChtZXNzYWdlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXScpIHsKKyAgICAgICAgICAgIGlmICgh
bWVzc2FnZS50ZXN0KFN0cmluZyhlcnJvcikpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5nKGVycm9yKX0nIHRvIG1hdGNoICR7bWVzc2FnZX0hYCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBt
ZXNzYWdlKTsKKyAgICAgICAgfQorfQorCisvLyBlcG9jaAoreworICAgIGNvbnN0IGluc3RhbnRz
ID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgwbiksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hNaWxsaXNlY29uZHMoMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVw
b2NoTWljcm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hO
YW5vc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3MC0wMS0w
MVQwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+
IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDApOworICAgICAgICBz
aG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAwKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmlu
ZygpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50
b0pTT04oKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIHBvc2l0
aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBU
ZW1wb3JhbC5JbnN0YW50KDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDFfMDAwXzAwMF8wMDApLAorICAgICAgICBU
ZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMCks
CisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDFfMDAwXzAw
MF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpLAorICAgIF07CisgICAgaW5zdGFudHMu
Zm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vj
b25kcywgMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxs
aXNlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pY3Jvc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4p
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcyMDAxLTA5LTA5VDAxOjQ2
OjQwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjAwMS0wOS0wOVQw
MTo0Njo0MFonKTsKKyAgICB9KTsKK30KKworLy8gbmVnYXRpdmUgZXBvY2ggdmFsdWUKK3sKKyAg
ICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoLTFfMDAw
XzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hTZWNvbmRzKC0xXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hNaWxsaXNlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAor
ICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKC0xXzAwMF8wMDBf
MDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTkzOC0w
NC0yNFQyMjoxMzoyMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQp
ID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIC0xXzAwMF8wMDBf
MDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgLTFfMDAw
XzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25k
cywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyk7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTM4LTA0LTI0VDIyOjEzOjIwWicpOwor
ICAgIH0pOworfQorCisvLyBtYXhpbnQ2NCBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0IGluc3Rh
bnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg5MjIzMzcyMDM2ODU0Nzc1ODA3
biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoOTIyMzM3
MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzIyNjItMDQt
MTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgo
aW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgOTIy
MzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIDky
MjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRz
LCA5MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5v
c2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LnRvU3RyaW5nKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3
WicpOworICAgIH0pOworfQorCisvLyBtaW5pbnQ2NCBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0
IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtOTIyMzM3MjAzNjg1
NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRz
KC05MjIzMzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCAtOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNl
Y29uZHMsIC05MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
Y3Jvc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE5hbm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworICAgICAgICBzaG91
bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5Mlon
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE2NzctMDktMjFUMDA6MTI6
NDMuMTQ1MjI0MTkyWicpOworICAgIH0pOworfQorCisvLyBtYXggSW5zdGFudCByYW5nZQorewor
ICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQw
MF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hTZWNvbmRzKDg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDApLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwXzAw
MG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKDg2NDAw
XzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20o
JysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNo
KChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCA4
NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNv
bmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE1pY3Jvc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBu
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnKzI3NTc2MC0wOS0xM1Qw
MDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJysyNzU3NjAt
MDktMTNUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbiBJbnN0YW50IHJhbmdlCit7
CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KC04
NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hTZWNvbmRzKC04NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMCksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBf
MDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRz
KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5zdGFudHMu
Zm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vj
b25kcywgLTg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hN
aWxsaXNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICctMjcx
ODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigp
LCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gdG9vIGxhcmdl
CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQwMF8wMDAwXzAwMDBf
MDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgL1xiODY0MDAwMDAwMDAwMDAwMDAwMDAwMVxiLyk7
CisvLyB0b28gc21hbGwKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KC04
NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgLy04NjQwMDAwMDAwMDAw
MDAwMDAwMDAxXGIvKTsKKy8vIGxhcmdlciB0aGFuIG1heGludDEyOAorc2hvdWxkVGhyb3coKCkg
PT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoMW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC9cYjY4MDU2
NDczMzg0MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBzbWFsbGVyIHRoYW4g
bWluaW50MTI4CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgtMW4gPDwg
MTI5biksIFJhbmdlRXJyb3IsIC8tNjgwNTY0NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYzNTM2NDIy
OTEyXGIvKTsKKy8vIGRvZXMgbm90IGNyYXNoIHdoZW4gYmlnaW50IGxvbmdlciB0aGFuIG1heGlu
dDMyIGRpZ2l0cworc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoQmlnSW50
KCc5Jy5yZXBlYXQoMjE0NzQ4MzY0NykpKSwgUmFuZ2VFcnJvcik7CisvLyBjb25zdHJ1Y3RzIGZy
b20gc3RyaW5nCitzaG91bGRCZShuZXcgVGVtcG9yYWwuSW5zdGFudCgnMCcpLmVwb2NoTmFub3Nl
Y29uZHMsIDBuKTsKKy8vIHRocm93cyBvbiBudW1iZXIKK3Nob3VsZFRocm93KCgpID0+IG5ldyBU
ZW1wb3JhbC5JbnN0YW50KDApLCBUeXBlRXJyb3IpOworLy8gdGhyb3dzIG9uIHN0cmluZyB0aGF0
IGRvZXMgbm90IGNvbnZlcnQgdG8gQmlnSW50CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9y
YWwuSW5zdGFudCgnYWJjMTIzJyksIFN5bnRheEVycm9yKTsKKworLy8gSW5zdGFudC5mcm9tKGlu
c3RhbnQpIGlzIG5vdCB0aGUgc2FtZSBvYmplY3QKK3sKKyAgICBjb25zdCBpbnN0ID0gVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcyMDIwLTAyLTEyVDExOjQyKzAxOjAwW0V1cm9wZS9BbXN0ZXJkYW1d
Jyk7CisgICAgc2hvdWxkTm90QmUoVGVtcG9yYWwuSW5zdGFudC5mcm9tKGluc3QpLCBpbnN0KTsK
K30KKworLy8gdG9TdHJpbmcKKworeworICAgIGNvbnN0IGkxID0gVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTc2LTExLTE4VDE1OjIzWicpOworICAgIGNvbnN0IGkyID0gVGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwWicpOworICAgIGNvbnN0IGkzID0gVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CisKKyAgICAvLyBkZWZh
dWx0IGlzIHRvIGVtaXQgc2Vjb25kcyBhbmQgZHJvcCB0cmFpbGluZyB6ZXJvcyBhZnRlciB0aGUg
ZGVjaW1hbCcKKyAgICBzaG91bGRCZShpMS50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToyMzow
MFonKTsKKyAgICBzaG91bGRCZShpMi50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToyMzozMFon
KTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0
WicpOworCisgICAgLy8gdHJ1bmNhdGVzIHRvIG1pbnV0ZQorICAgIFtpMSwgaTIsIGkzXS5mb3JF
YWNoKChpKSA9PiBzaG91bGRCZShpLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJyB9
KSwgJzE5NzYtMTEtMThUMTU6MjNaJykpOworCisgICAgLy8gb3RoZXIgc21hbGxlc3RVbml0cyBh
cmUgYWxpYXNlcyBmb3IgZnJhY3Rpb25hbCBkaWdpdHMKKyAgICBzaG91bGRCZShpMy50b1N0cmlu
Zyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogMCB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVu
aXQ6ICdtaWxsaXNlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0
czogMyB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaWNy
b3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNiB9KSk7
CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICduYW5vc2Vjb25kJyB9
KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA5IH0pKTsKKworICAgIC8v
IHRydW5jYXRlIG9yIHBhZCB0byAyIHBsYWNlcworICAgIHsKKyAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMiB9OworICAgICAgICBzaG91bGRCZShpMS50
b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAuMDBaJyk7CisgICAgICAgIHNo
b3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4wMFonKTsK
KyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIz
OjMwLjEyWicpOworICAgIH0KKyAgICAvLyBwYWQgdG8gNyBwbGFjZXMKKyAgICB7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDcgfTsKKyAgICAgICAg
c2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAwLjAwMDAw
MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyhvcHRp
b25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDAwMFonKTsKKyAgICB9CisKKyAgICAvLyBy
b3VuZCB0byBuZWFyZXN0CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6
ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEtMThUMTU6
MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiAzLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzWicpOworICAgIC8vIHJvdW5kIHVwCisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFs
bGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYtMTEtMThU
MTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGln
aXRzOiAzLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTI0
WicpOworICAgIC8vIHJvdW5kIGRvd24KKyAgICBbJ2Zsb29yJywgJ3RydW5jJ10uZm9yRWFjaCgo
cm91bmRpbmdNb2RlKSA9PiB7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsgc21hbGxl
c3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToyM1onKTsK
KyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAz
LCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKTsKKyAgICB9KTsK
KworICAgIHsKKyAgICAgICAgLy8gcm91bmRpbmcgZG93biBpcyB0b3dhcmRzIHRoZSBCaWcgQmFu
Zywgbm90IHRvd2FyZHMgMSBCQ0UKKyAgICAgICAgY29uc3QgaTQgPSBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJy0wMDAwOTktMTItMTVUMTI6MDA6MDAuNVonKTsKKyAgICAgICAgc2hvdWxkQmUoaTQu
dG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnLCByb3VuZGluZ01vZGU6ICdmbG9vcicg
fSksICctMDAwMDk5LTEyLTE1VDEyOjAwOjAwWicpOworCisgICAgICAgIC8vIHJvdW5kaW5nIGNh
biBhZmZlY3QgYWxsIHVuaXRzCisgICAgICAgIGNvbnN0IGk1ID0gVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTk5OVonKTsKKyAgICAgICAgc2hvdWxkQmUo
aTUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA4LCByb3VuZGluZ01vZGU6ICdo
YWxmRXhwYW5kJyB9KSwgJzIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwMDAwMDBaJyk7CisgICAgfQor
fQorCisvLyBsZWFwIHNlY29uZCBpcyBjb25zdHJhaW5lZAorc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcyMDE2LTEyLTMxVDIzOjU5OjYwWicpfWAsICcyMDE2LTEyLTMxVDIzOjU5
OjU5WicpOworLy8gdmFyaWFudCB0aW1lIHNlcGFyYXRvcnMKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOCAxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzow
MFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOHQxNToy
M1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIHZhcmlhbnQgVVRDIGRlc2lnbmF0
b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyM3on
KX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIGFueSBudW1iZXIgb2YgZGVjaW1hbCBw
bGFjZXMKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToy
MzozMC4xWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyl9YCwgJzE5NzYtMTEt
MThUMTU6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKTsK
K3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjM0WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyl9YCwgJzE5NzYt
MTEtMThUMTU6MjM6MzAuMTIzNDVaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMw
LjEyMzQ1NlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNToyMzozMC4xMjM0NTY3WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NjdaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzNDU2NzhaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2NzhaJyk7CitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5
WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8vIHZhcmlhbnQgZGVj
aW1hbCBzZXBhcmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0x
MS0xOFQxNToyMzozMCwxMlonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKKy8vIHZh
cmlhbnQgbWludXMgc2lnbgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1OjIzOjMwLjEyXHUyMjEyMDI6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNzoyMzozMC4x
MlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnXHUyMjEyMDA5OTk5LTEx
LTE4VDE1OjIzOjMwLjEyWicpfWAsICctMDA5OTk5LTExLTE4VDE1OjIzOjMwLjEyWicpOworLy8g
bWl4dHVyZSBvZiBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CitzaG91bGRCZShgJHtUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3No
b3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xKzAw
MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQx
NToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTEx
OFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNTIzMzAuMSswMDowMCcpfWAs
ICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50
LmZyb20oJyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTEx
LTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNToyMzozMC4xKzAw
MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAx
OTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIzMzAuMSsw
MDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworLy8gb3B0aW9uYWwgcGFydHMKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMCswMCcpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
VDE1WicpfWAsICcxOTc2LTExLTE4VDE1OjAwOjAwWicpOworLy8gaWdub3JlcyBhbnkgc3BlY2lm
aWVkIGNhbGVuZGFyCisvLyBGSVhNRTogcGFyc2UgY2FsZW5kYXIKKy8vIHNob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaW3UtY2E9
ZGlzY29yZF0nKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7CisvLyBubyBq
dW5rIGF0IGVuZCBvZiBzdHJpbmcKK3Nob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaanVuaycpLCBSYW5nZUVycm9yKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbAppbmRleCAzMTJjMjY4NmYwMDRiYjYxMjRiYTdkMGViNGNiYjQ5ZmUwMTA4
ZDgwLi41ZDRmNjRiMGZkYjY0YjQ4YzIyN2Q5MjQ4NzM4NDE5NzBlMjAwNDEyIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCkBAIC0yMyw3ICsyMyw4IEBAIHNraXA6CiAgICAgLSBTaGFkb3dSZWFsbQogICBwYXRo
czoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0NhbGVuZGFyCi0gICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50CisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9J
bnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZUlTTwogICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvTm93CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFp
bkRhdGUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0ZVRpbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440419</attachid>
            <date>2021-10-06 13:01:09 -0700</date>
            <delta_ts>2021-10-06 14:52:33 -0700</delta_ts>
            <desc>Patch (in progress)</desc>
            <filename>bug-229826-20211006130107.patch</filename>
            <type>text/plain</type>
            <size>126734</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NThkOTViMzJhNjI3ZDc2MDIxYmQ1MjRhMGI2NjA3OGExNzI0MzVhLi40NTU5M2EwZDBkZjA2ZDIy
ZWRiYjc0MTNlMmM2OTQ1ZjliYjE3MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50
b0BnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNpbmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3Ry
aW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhl
ciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpm
cm9tSVNPUGFydHNBbmRPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6
OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6cm91bmQpOgor
ICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmRpZmZlcmVuY2UgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0lTTzg2MDEuaDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yW10pOiBBZGQgYW4gb3ZlcmxvYWQgZm9yIER1cmF0aW9uW10KKyAgICAgICAgICB0aGF0IGlu
ZGV4ZXMgYnkgVGVtcG9yYWxVbml0IGVudW0gaW5zdGVhZCBvZiBpbnRlZ2VyIGluZGV4LgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6RXhhY3RUaW1lKTogQWRkIGFuIEV4YWN0VGltZSB0
eXBlIHRoYXQgd3JhcHMKKyAgICAgICAgICBhbiBJbnQxMjggYW5kIGNhbiBkbyB0aGUgYmFzaWMg
b3BlcmF0aW9ucy4gVGhpcyB0eXBlIGNhbiBiZSByZXVzZWQgaW4KKyAgICAgICAgICBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lLgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9j
aE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVw
b2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aFNlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmVwb2No
TWlsbGlzZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpl
cG9jaE1pY3Jvc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGlt
ZTo6ZXBvY2hOYW5vc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6bmFub3NlY29uZHNGcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OkV4YWN0VGltZTo6cHJpbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0
b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+PSBjb25z
dCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+IGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKTogQWRkIGEgbWluaW1hbAorICAgICAg
ICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYW5kbGVEYXRlVGltZVZhbHVlIGFic3RyYWN0IG9w
IGZyb20gdGhlCisgICAgICAgICAgVGVtcG9yYWwgc3BlY2lmaWNhdGlvbiwgb25seSBjb3Zlcmlu
ZyBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOiBVc2UgaXQgaW4gdGhlIGV4aXN0aW5nCisgICAgICAgICAgSW50bC5EYXRlVGltZUZvcm1h
dCBtZXRob2RzLgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlND
OjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6IEFkZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGFuIElu
dDEyOC4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6IFJlbW92ZSBkZWNsYXJhdGlvbiBm
b3Igbm9uZXhpc3RlbnQgdG9VaW50NjRIZWFwKCkuCisgICAgICAgICogcnVudGltZS9KU0RhdGVN
YXRoLmNwcDogTW92ZSB0aW1lVG9NUygpIGludG8gV1RGLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5zdGFudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbUR1cmF0aW9uTGlrZSk6
IEFjY2VzcyBEdXJhdGlvbiBwcm9wZXJ0aWVzIGluCisgICAgICAgICAgdGhlIG9yZGVyIGRlZmlu
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246
OnRvTGltaXRlZER1cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OndpdGggY29uc3QpOiBBY2Nlc3MgRHVyYXRpb24gcHJvcGVydGllcyBpbiB0aGUKKyAgICAg
ICAgICBvcmRlciBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OnRvSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25kcyk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMpOgorICAgICAgICAoSlND
OjpUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAg
ICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnN0YW50
Q29uc3RydWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Zm9ybWF0U2Vjb25kc1N0cmluZ1Bh
cnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YWJzKTogQWRkZWQgZm9yIGNsYXJpdHkuCisgICAg
ICAgIChKU0M6OnJvdW5kTnVtYmVyVG9JbmNyZW1lbnQpOiBBZGQgb3ZlcmxvYWQgZm9yIEludDEy
OC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6IEFkZCBhcnJheSBjb3JyZXNw
b25kaW5nIHRvIHRoZSB0YWJsZSBpbiB0aGUKKyAgICAgICAgICBzcGVjIHRleHQgc3BlY2lmeWlu
ZyBhbHBoYWJldGljYWwgYWNjZXNzIG9yZGVyIGZvciB1bml0IHByb3BlcnRpZXMuCisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTEwLTA2
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBm
aXggZm9yIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeVZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYjBiMmM2N2VmMDZiYWY4MDA0M2EwYmM3ZGIwMDQ3YjZiN2Q2MzQy
Ni4uOWJlYTRjYmQyOTFiZjc1ODE2OTVkNzExMTYwZTFhMDIzNDQyNTE4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMS0wOS0yMyAgUGhpbGlwIENoaW1lbnRvICA8cGhpbGlwLmNoaW1lbnRvQGdt
YWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGF0ZU1h
dGguaDoKKyAgICAgICAgKFdURjo6dGltZVRvTVMpOiBNb3ZlZCBmcm9tIEpTRGF0ZU1hdGguaC4K
KyAgICAgICAgKiB3dGYvSW50MTI4Lmg6CisgICAgICAgIChXVEY6OkludDEyOEltcGw6OkludDEy
OEltcGwpOiBBZGQgYSBjb252ZXJzaW9uIGZyb20gSW50MTI4IHRvIFVJbnQxMjgKKyAgICAgICAg
ICBhbmQgdmljZSB2ZXJzYS4KKwogMjAyMS0xMC0wNiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dh
cmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRleHQgc2VsZWN0aW9uIHRvIGZsaXAu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjMyYzMwZjExMGY2YTI5ZTJj
ODE2Zjg3YzU1NmExMmZkYmUwZDZjOC4uY2UyODYzOTQ4NmUwZjA0ZTNhOTdhMzNkYTQxYjJkZDQ4
OTkxYmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTExLDYgKzEx
MSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCisgICAgcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE5v
dy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMjg4NWI1MTAxN2NjMWFl
M2Q4OTJlZjNjNWYyN2E0YjEyMzc1Mzg0Mi4uMjhkNTJkNWI0OWI0ZThkNGZlZjMzMzNlMmYzNTAz
MTU1MzYzYjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3Myw2ICsxNzMsOCBAQCAkKFBST0pFQ1RfRElS
KS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1w
b3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAk
KFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZS4u
MGU4NzE1Nzc2NThiZjAxMTg0NGFjYmQzMDc1NTAzNjcwNWU1YmQxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtNzAsNiArNzAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLgogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVD
b25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCBlY2JjZTY3Zjc4YzAwMzRjMTY2ZjUwZDU4OTJhNmYwOGM1ZGE0MGQ2Li4wMTVlNmE0
OWQwZTgzNTkxM2I0MWJkMmU1M2NmYzVjZmVhMmIxYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk1LDYgKzE5NSw4IEBAIE9CSkVDVF9MVVRfSEVB
REVSUyA9IFwKICAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIFwKKyAg
ICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsTm93Lmx1dC5o
IFwKICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhjMzU1NDUw
ZDI0ZjY5YThjOTE4ZmJkMzkwNWI0MmJjYjk1MDc5MzguLmUyMTA0NmFlOTMxZWE5MGFmMjRkNzBj
ZGFmNWI4OTE3NzQxZWUxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTYw
LDYgKzE5NjAsMTEgQEAKIAkJRTNGRjc1MzMxRDlDRUExODAwQzdFMTZEIC8qIERPTUpJVEdldHRl
clNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZDMTJFRjI5
NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIyMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjZENjdENDAy
NkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRl
bXBvcmFsSW5zdGFudC5oICovOyB9OworCQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAzNDkgLyogVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmggKi87IH07CisJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZENjdENDgyNkY5MTMwQzAwNkUwMzQ5IC8q
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUY2RjE1MDIxMjY5M0Q0NTAwMDRCOThF
RiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVj
dC5sdXQuaCAqLzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9y
TWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTA0MTU1MjI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTA1RkFGRDFGRTRDRURB
MDAwOTMyMzAgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJENkExMTFGQkQ0OTFEMDAwMjQ1RjQg
LyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CkBAIC01MzMyLDYgKzUzMzcs
MTQgQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdFMDI1
NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
fTsKKwkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBv
cmFsSW5zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQjI2Rjkw
MkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQzI2RjkwMkU3MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2
N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE5vdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxQTI2OTNEMzNFMDA0Qjk4RUYgLyog
VGVtcG9yYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjUsNiArNzA3OCw4
IEBACiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3RvdHlwZS5sdXQu
aCAqLywKIAkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1w
b3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUY2RDY3RDQ1MjZGOTEzMEEwMDZF
MDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlGNkQ2N0Q0
NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovLAog
CQkJCUY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLywK
IAkJCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJCUFEMkZD
QzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
Lmx1dC5oICovLApAQCAtODAyNCw2ICs4MDM5LDEyIEBACiAJCQkJQTNDN0VEQjQyNkIwREIzNzAw
NEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCUEzQzdFREI1
MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJ
CQlBM0M3RURCMDI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5o
ICovLAorCQkJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuY3Bw
ICovLAorCQkJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAq
LywKKwkJCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwICovLAorCQkJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovLAorCQkJCUY2RDY3RDNFMjZGOTAyRTgwMDZF
MDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAxQjI2OTNE
MzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5M0QzM0Qw
MDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThF
RiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCkBAIC0xMDc0Niw2ICsxMDc2NywxMSBAQAogCQkJ
CUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBEQjM4MDA0QzM0QzUg
LyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjZENjdE
NDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NDI2
RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8q
IFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0UyNkU4NjdC
ODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg2
RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYTg1OTczZTdlZGNl
MWI4MzcxMWUwMjkxOTcyYTMxYTQ0NmFmODUxMC4uMzZjNjAxYzBlODAyMTJhYTkzYjMwMmNmNDMw
MzBmOTU5MDE1YjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAxOCw2ICsx
MDE4LDkgQEAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3Iu
Y3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCitydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCity
dW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cu
Y3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZW1wb3JhbFBsYWluVGlt
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKaW5kZXggZTcy
YmY3Mjc3YjIyZjM3NjUyOTY0ZWY0NDM2NjEwZTk2MzQzMWQ5Yy4uYmJmMWFjNGUyNDdlOGE5MTZi
YTgzZDc5NjZjZjJkZDRjZThjY2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SVNPODYwMS5jcHAKQEAgLTg3Nyw2ICs4NzcsMzcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxl
PFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWUK
ICAgICB9KTsKIH0KIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNlSW5zdGFudChTdHJp
bmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3Byb2QtVGVtcG9yYWxJbnN0YW50U3RyaW5nCisgICAgLy8gVGVtcG9yYWxJbnN0YW50U3Ry
aW5nIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lWm9uZU9mZnNldFJlcXVpcmVkCisgICAgLy8gICAg
IERhdGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMgVGltZVpvbmVPZmZzZXRSZXF1aXJlZAor
CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25l
T2Zmc2V0UmVxdWlyZWQKKyAgICAvLyBUaW1lWm9uZU9mZnNldFJlcXVpcmVkIDoKKyAgICAvLyAg
ICAgVGltZVpvbmVVVENPZmZzZXQgVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uX29wdAorCisg
ICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVy
KSAtPiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4geworICAgICAgICBhdXRvIGRhdGV0aW1lID0g
cGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWRhdGV0aW1lKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBbZGF0ZSwgbWF5YmVUaW1lLCBt
YXliZVRpbWVab25lXSA9IGRhdGV0aW1lLnZhbHVlKCk7CisgICAgICAgIGlmICghbWF5YmVUaW1l
Wm9uZSB8fCAoIW1heWJlVGltZVpvbmUtPm1feiAmJiAhbWF5YmVUaW1lWm9uZS0+bV9vZmZzZXQp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgLy8gRklYTUU6IHBh
cnNlIGNhbGVuZGFyIGFubm90YXRpb24KKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgUGxhaW5UaW1lIHRpbWU7
CisgICAgICAgIGlmIChtYXliZVRpbWUpCisgICAgICAgICAgICB0aW1lID0gbWF5YmVUaW1lLnZh
bHVlKCk7CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBtYXliZVRpbWVab25lLT5tX3ogPyAw
IDogKm1heWJlVGltZVpvbmUtPm1fb2Zmc2V0OworICAgICAgICByZXR1cm4geyBFeGFjdFRpbWU6
OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIoKSwgZGF0ZS5tb250aCgpLCBkYXRlLmRh
eSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwgdGltZS5zZWNvbmQoKSwgdGltZS5taWxs
aXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRpbWUubmFub3NlY29uZCgpLCBvZmZzZXQp
IH07CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLWZvcm1hdHRpbWV6b25lb2Zmc2V0c3RyaW5nCiBTdHJpbmcgZm9ybWF0VGlt
ZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiB7CkBAIC05NjksNSArMTAwMCw5MCBA
QCBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24pCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK0V4YWN0VGltZSBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNl
dChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2lnbmVkIGgsIHVuc2lnbmVk
IG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1pY3JvcywgdW5zaWduZWQg
bnMsIGludDY0X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCh5ID49IC05OTk5OTkgJiYgeSA8PSA5
OTk5OTkpOworICAgIEFTU0VSVChtb24gPj0gMSAmJiBtb24gPD0gMTIpOworICAgIEFTU0VSVChk
ID49IDEgJiYgZCA8PSAzMSk7CisgICAgQVNTRVJUKGggPj0gMCAmJiBoIDw9IDIzKTsKKyAgICBB
U1NFUlQobWluID49IDAgJiYgbWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA+PSAwICYmIHMgPD0g
NTkpOworICAgIEFTU0VSVChtcyA+PSAwICYmIG1zIDw9IDk5OSk7CisgICAgQVNTRVJUKG1pY3Jv
cyA+PSAwICYmIG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA+PSAwICYmIG5zIDw9IDk5
OSk7CisKKyAgICBkb3VibGUgZGF0ZURheXMgPSBkYXRlVG9EYXlzRnJvbTE5NzAoeSwgbW9uIC0g
MSwgZCk7CisgICAgZG91YmxlIHRpbWVNcyA9IHRpbWVUb01TKGgsIG1pbiwgcywgbXMpOworICAg
IGRvdWJsZSB1dGNNcyA9IGRhdGVEYXlzICogbXNQZXJEYXkgKyB0aW1lTXM7CisgICAgSW50MTI4
IHV0Y05zID0gSW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4odXRjTXMpIH0gKiAxJzAwMCcw
MDAgKyBtaWNyb3MgKiAxMDAwICsgbnM7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHV0Y05zIC0g
b2Zmc2V0IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBFeGFjdFRpbWU6OmFkZChE
dXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoIWR1cmF0aW9uLnllYXJzKCkp
OworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24u
d2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlzKCkpOworCisgICAgSW50MTI4IHJl
c3VsdE5zIHsgbV9lcG9jaE5hbm9zZWNvbmRzIH07CisKKyAgICAvLyBUaGUgZHVyYXRpb24ncyBo
b3VycywgbWludXRlcywgc2Vjb25kcywgYW5kIG1pbGxpc2Vjb25kcyBzaG91bGQgYmUKKyAgICAv
LyBhYmxlIHRvIGJlIGNhc3QgaW50byBhIDY0LWJpdCBpbnQuIDIqMWU4IDI0LWhvdXIgZGF5cyBp
cyB0aGUgbWF4aW11bQorICAgIC8vIHRpbWUgc3BhbiBmb3IgZXhhY3QgdGltZSwgc28gaWYgd2Ug
YWxyZWFkeSBrbm93IHRoYXQgdGhlIGR1cmF0aW9uIGV4Y2VlZHMKKyAgICAvLyB0aGF0LCB0aGVu
IHdlIGNhbiBiYWlsIG91dC4KKworICAgIGlmIChmYWJzKGR1cmF0aW9uLmhvdXJzKCkpID4gNDgw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHROcyArPSBJ
bnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5ob3VycygpKSB9ICogRXhhY3RU
aW1lOjpuc1BlckhvdXI7CisgICAgaWYgKGZhYnMoZHVyYXRpb24ubWludXRlcygpKSA+IDI4ODAw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHROcyArPSBJ
bnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5taW51dGVzKCkpIH0gKiBFeGFj
dFRpbWU6Om5zUGVyTWludXRlOworICAgIGlmIChmYWJzKGR1cmF0aW9uLnNlY29uZHMoKSkgPiAx
LjcyOGUrMTMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0TnMgKz0g
SW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24uc2Vjb25kcygpKSB9ICogRXhh
Y3RUaW1lOjpuc1BlclNlY29uZDsKKyAgICBpZiAoZmFicyhkdXJhdGlvbi5taWxsaXNlY29uZHMo
KSkgPiAxLjcyOGUrMTYpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0
TnMgKz0gSW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubWlsbGlzZWNvbmRz
KCkpIH0gKiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7CisgICAgLy8gRklYTUU6IHByZWNp
c2lvbi4gY2hlY2sgaWYgdGhlcmUgaXMgc3VjaCBhIHRoaW5nIGFzIGNoZWNrZWQgaW50ZWdlcgor
ICAgIC8vIGFyaXRobWV0aWMgaW4gV1RGCisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHsgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubWljcm9zZWNvbmRzKCkpIH0gKiBFeGFjdFRpbWU6Om5z
UGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZHVyYXRpb24ubmFub3NlY29uZHMoKSkgfTsKKworICAgIEV4YWN0VGltZSByZXN1bHQg
eyByZXN1bHROcyB9OworICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJbnQxMjggRXhhY3RUaW1l
Ojpyb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50MTI4IGluY3JlbWVu
dE5zIHsgaW5jcmVtZW50IH07CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkhvdXI6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJIb3VyOyBicmVhazsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6
Om5zUGVyTWludXRlOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBpbmNy
ZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TWlsbGlzZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWxs
aXNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiBpbmNy
ZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7IGJyZWFrOworICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5kTnVtYmVyVG9JbmNy
ZW1lbnQocXVhbnRpdHksIGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOworfQorCisvLyBEaWZm
ZXJlbmNlSW5zdGFudCAoIG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwgc21hbGxlc3RVbml0
LCByb3VuZGluZ01vZGUgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtZGlmZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRpbWU6OmRpZmZlcmVu
Y2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0
LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIEludDEyOCBkaWZmID0g
b3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIHJldHVy
biByb3VuZChkaWZmLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKK0V4YWN0
VGltZSBFeGFjdFRpbWU6OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVu
aXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4YWN0
VGltZSB7IHJvdW5kKG1fZXBvY2hOYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1bml0LCByb3VuZGlu
Z01vZGUpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGRhMzczNDExMzZj
YTI1YjM0OWYyNGVhZTc2Zjk1ODI0YjMyZjkxNzEuLmE1MzBkMDI4MTUyNDUzMDVlMmFmNGNiZWJj
Nzc5N2U4MzFjNTRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CkBAIC02MSw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAg
IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ldOyB9CiAgICAg
Y29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX2RhdGFb
aV07IH0KKyAgICBkb3VibGUmIG9wZXJhdG9yW10oVGVtcG9yYWxVbml0IHUpIHsgcmV0dXJuIG1f
ZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90Pih1KV07IH0KKyAgICBjb25zdCBkb3VibGUmIG9wZXJh
dG9yW10oVGVtcG9yYWxVbml0IHUpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVtzdGF0aWNfY2FzdDx1
aW50OF90Pih1KV07IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmVuZCgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7IH0K
QEAgLTc3LDYgKzgwLDEyMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCBudW1i
ZXJPZlRlbXBvcmFsVW5pdHM+IG1fZGF0YSB7IH07CiB9OwogCitjbGFzcyBFeGFjdFRpbWUgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEV4YWN0VGltZSk7CitwdWJsaWM6CisgICAgY29u
c3RleHByIEV4YWN0VGltZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgRXhhY3RUaW1lKGNv
bnN0IEV4YWN0VGltZSYpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgRXhhY3RU
aW1lKEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKSA6IG1fZXBvY2hOYW5vc2Vjb25kcyhlcG9jaE5h
bm9zZWNvbmRzKSB7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RUaW1lIGZyb21FcG9j
aFNlY29uZHMoaW50NjRfdCBlcG9jaFNlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhh
Y3RUaW1lKEludDEyOCB7IGVwb2NoU2Vjb25kcyB9ICogRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7
CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RUaW1lIGZyb21FcG9jaE1pbGxpc2Vj
b25kcyhpbnQ2NF90IGVwb2NoTWlsbGlzZWNvbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4
YWN0VGltZShJbnQxMjggeyBlcG9jaE1pbGxpc2Vjb25kcyB9ICogRXhhY3RUaW1lOjpuc1Blck1p
bGxpc2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVw
b2NoTWljcm9zZWNvbmRzKGludDY0X3QgZXBvY2hNaWNyb3NlY29uZHMpCisgICAgeworICAgICAg
ICByZXR1cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoTWljcm9zZWNvbmRzIH0gKiBFeGFjdFRp
bWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgRXhhY3RUaW1lIGZyb21J
U09QYXJ0c0FuZE9mZnNldChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2ln
bmVkIGgsIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1p
Y3JvcywgdW5zaWduZWQgbnMsIGludDY0X3Qgb2Zmc2V0KTsKKworICAgIGNvbnN0ZXhwciBpbnQ2
NF90IGVwb2NoU2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgp
KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25k
cyAvIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgaW50NjRf
dCBlcG9jaE1pbGxpc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vj
b25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhw
ciBpbnQ2NF90IGVwb2NoTWljcm9zZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9lcG9j
aE5hbm9zZWNvbmRzIC8gRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsKKyAgICB9CisgICAg
Y29uc3RleHByIEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBpbnQgbmFub3NlY29uZHNGcmFjdGlvbigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Vwb2NoTmFub3NlY29uZHMg
JSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisKKyAgICBTdHJpbmcgYXNTdHJpbmco
KSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBp
ZiAobV9lcG9jaE5hbm9zZWNvbmRzIDwgMCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Jy0nKTsKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCAtbV9lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhc1N0cmluZ0ltcGwoYnVpbGRlciwg
bV9lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
KyAgICB9CisKKyAgICAvLyBJc1ZhbGlkRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29u
ZHMgKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLWlzdmFsaWRlcG9jaG5hbm9zZWNvbmRzCisgICAgY29uc3RleHByIGJvb2wgaXNWYWxpZCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID49IEV4YWN0
VGltZTo6bWluVmFsdWUgJiYgbV9lcG9jaE5hbm9zZWNvbmRzIDw9IEV4YWN0VGltZTo6bWF4VmFs
dWU7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KEV4YWN0VGltZSBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPCBvdGhl
ci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PD0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hO
YW5vc2Vjb25kcyA8PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA9PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7
CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oRXhhY3RUaW1lIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyAhPSBvdGhlci5t
X2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0o
RXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5v
c2Vjb25kcyA+PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPihFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID4gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAg
IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBhZGQoRHVyYXRpb24pIGNvbnN0Owor
ICAgIEludDEyOCBkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwgdW5zaWduZWQgaW5jcmVtZW50
LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CisgICAgRXhhY3RUaW1lIHJvdW5k
KHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IGRheVJhbmdlU2Vjb25kcyB7
IDg2NDAwJzAwMDAwMDAwIH07IC8vIDFlOCBkYXlzCisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQx
MjggbnNQZXJNaWNyb3NlY29uZCB7IDEwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEy
OCBuc1Blck1pbGxpc2Vjb25kIHsgMScwMDAnMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBJ
bnQxMjggbnNQZXJTZWNvbmQgeyAxJzAwMCcwMDAnMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBJbnQxMjggbnNQZXJNaW51dGUgPSBuc1BlclNlY29uZCAqIDYwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgSW50MTI4IG5zUGVySG91ciA9IG5zUGVyTWludXRlICogNjA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBJbnQxMjggbWluVmFsdWUgPSAtZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbWF4VmFsdWUgPSBkYXlSYW5nZVNlY29uZHMg
KiBuc1BlclNlY29uZDsKKworICAgIHN0YXRpYyB2b2lkIGFzU3RyaW5nSW1wbChTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBJbnQxMjggdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPiA5
KQorICAgICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIHZhbHVlIC8gMTApOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUgJSAxMCkgKyAnMCcp
OworICAgIH0KKworICAgIHN0YXRpYyBJbnQxMjggcm91bmQoSW50MTI4IHF1YW50aXR5LCB1bnNp
Z25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKTsKKworICAgIEludDEy
OCBtX2Vwb2NoTmFub3NlY29uZHMgeyB9OworfTsKKwogY2xhc3MgUGxhaW5UaW1lIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUpOwogcHVibGljOgpAQCAtMTY2LDUgKzI4
NSw3IEBAIFN0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUsIHN0ZDo6dHVwbGU8
UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uCiAKIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNv
bnN0IER1cmF0aW9uJik7CiAKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBwYXJzZUluc3RhbnQo
U3RyaW5nVmlldyk7CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuaAppbmRleCBhNTA5ZDkyZDYzZTk1YmVmMDA2MjBhMzA2YTNhNTVmMDRhNjU2MzgyLi5jMTdk
N2U3NDIxZDE5ZTkwNTRmNTY5M2U3MDhkMWEyZmY1ODRiMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtOTQsNiArOTQs
OCBAQCBwcml2YXRlOgogCiAgICAgVURhdGVJbnRlcnZhbEZvcm1hdCogY3JlYXRlRGF0ZUludGVy
dmFsRm9ybWF0SWZOZWNlc3NhcnkoSlNHbG9iYWxPYmplY3QqKTsKIAorICAgIHN0YXRpYyBkb3Vi
bGUgaGFuZGxlRGF0ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCiAgICAg
ZW51bSBjbGFzcyBXZWVrZGF5IDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcg
fTsKICAgICBlbnVtIGNsYXNzIEVyYSA6IHVpbnQ4X3QgeyBOb25lLCBOYXJyb3csIFNob3J0LCBM
b25nIH07CiAgICAgZW51bSBjbGFzcyBZZWFyIDogdWludDhfdCB7IE5vbmUsIFR3b0RpZ2l0LCBO
dW1lcmljIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA3NTg0Y2YwY2ZiMTI5ZWJj
ZjhhYmY0NTNmM2ViZWFmNGI5NzFjZjNiLi42ZTRkNjI1YzUwMmYyMGM0M2JmOWQ2MzhhMmViM2E4
MmY4MmMzMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFs
SW5zdGFudC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTkwLDYgKzkxLDI3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKKy8vIEhhbmRsZURhdGVUaW1lVmFs
dWUgKCBkYXRlVGltZUZvcm1hdCwgeCApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1oYW5kbGVkYXRldGltZXZhbHVlCitkb3VibGUgSW50bERhdGVU
aW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgeCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHguaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkYXRlTm93SW1wbCgp
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworCisgICAgLy8gRklYTUU6CisgICAgLy8gIC0gQWRk
IGFsbCBvZiB0aGUgb3RoZXIgVGVtcG9yYWwgdHlwZXMKKyAgICAvLyAgLSBXb3JrIGluIGVwb2No
IG5hbm9zZWNvbmRzCisgICAgLy8gIC0gUmV0dXJuIFVEYXRlRm9ybWF0IGFuZCBVRGF0ZUludGVy
dmFsRm9ybWF0IGRlcGVuZGluZyBvbiB0aGUgdHlwZQorICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIHgpOworICAgIGlmIChp
bnN0YW50KQorICAgICAgICByZXR1cm4gaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNl
Y29uZHMoKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgV1RGOjp0aW1lQ2xpcCh4
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpKTsKK30KKwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xMDAsMTQgKzEyMiw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2JhbE9iamVj
dCoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChk
YXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUpKSk7CiB9CkBAIC0xNTYsMTQgKzE3Miw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xv
YmFsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFs
dWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVO
b3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFs
dWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAg
ICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRp
bWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KQEAgLTE4
NSw5ICsxOTUsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYgogICAgIGlmIChzdGFydERhdGVW
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRl
IG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBz
dGFydERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERh
dGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0
LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICBkb3VibGUgZW5kRGF0ZSA9IGVuZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgIGRvdWJsZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGlt
ZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBp
cyBsYXJnZXIgdGhhbiBlbmREYXRlIl9zKTsKQEAgLTIxMiw5ICsyMjIsOSBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdl
VG9QYXJ0cywgKEpTRwogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVu
ZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVk
Il9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBzdGFydERhdGVWYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBkb3VibGUgZW5kRGF0ZSA9IGVu
ZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBlbmREYXRlID0g
SW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5k
RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlm
IChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhhbiBlbmREYXRlIl9z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAxNzRi
MGY4YWU3ZmVkYmIzMjQzZjQ0YWVkZTU0MzBjYmYyZjI0MWIyLi40YjU5NmMyN2E2YjM0YTIxYjk5
NDk3YzE0NzlmY2Y3NjhkNTA4MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5j
bHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMjMxLDYgKzIzMiw2MiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRfdCB2YWx1ZSkKICAgICBy
ZXR1cm4gY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZFZhbHVlLCBzaWduKTsK
IH0KIAorSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEludDEyOCB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVaZXJvKGds
b2JhbE9iamVjdCkpOworCisgICAgVUludDEyOCB1bnNpZ25lZFZhbHVlOworICAgIGJvb2wgc2ln
biA9IGZhbHNlOworICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9
IHN0YXRpY19jYXN0PFVJbnQxMjg+KC0odmFsdWUgKyAxKSkgKyAxOworICAgICAgICBzaWduID0g
dHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9IHZhbHVlOworCisgICAg
aWYgKHVuc2lnbmVkVmFsdWUgPD0gVUlOVDY0X01BWCkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBjcmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih1bnNpZ25lZFZhbHVlKSwgc2lnbikpOworCisgICAgaWYgY29uc3RleHByIChzaXplb2Yo
RGlnaXQpID09IDgpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5n
dGgoZ2xvYmFsT2JqZWN0LCAyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSkpOworICAgICAgICBEaWdpdCBoaWdo
Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworCisgICAgICAgIEFTU0VSVChoaWdoQml0cyk7CisKKyAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBsb3dCaXRzKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgxLCBo
aWdoQml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICB9CisKKyAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9PSA0KTsKKworICAg
IERpZ2l0IGRpZ2l0MCA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dW5zaWduZWRWYWx1ZSkpOworICAgIERpZ2l0IGRpZ2l0MSA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiAzMikpOworICAgIERpZ2l0IGRp
Z2l0MiA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworICAgIERpZ2l0IGRpZ2l0MyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0
aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiA5NikpOworCisgICAgQVNTRVJUKGRp
Z2l0MiB8fCBkaWdpdDMpOworCisgICAgaW50IGxlbmd0aCA9IGRpZ2l0MyA/IDQgOiAzOworICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgbGVuZ3Ro
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGJpZ0lu
dC0+c2V0RGlnaXQoMCwgZGlnaXQwKTsKKyAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGRpZ2l0MSk7
CisgICAgYmlnSW50LT5zZXREaWdpdCgyLCBkaWdpdDIpOworICAgIGlmIChkaWdpdDMpCisgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMywgZGlnaXQzKTsKKyAgICBiaWdJbnQtPnNldFNpZ24oc2ln
bik7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVG
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3OC4u
ODhmM2MzOTAzOTkxMjJlMjM3YWUyYTE4NjExNjMzYjZkYTY3OTRjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2Vk
VW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCB2
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9t
KEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCB2YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgdmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShK
U0dsb2JhbE9iamVjdCosIEludDEyOCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKTsKIApAQCAtNjA1LDgg
KzYwNyw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDY0
X3QgdG9CaWdVSW50NjRIZWFwKEpTQmlnSW50Kik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VaW50NjRIZWFwKEpTQmlnSW50Kik7Ci0K
ICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZzZXRPZkRhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JpZ0ludCwgbV9kYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZGFlOWIzYTliYzkyZmJhZmQ0
ZTMwMTk0YjRkMWE4ZDgzZGJkMmNmZi4uNTIxOWY4ZjcyNDJiODZmOTQwZTgyODIzNTg0ZTYxZmUy
YmE0OWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5j
cHAKQEAgLTI2OSwxMSArMjY5LDYgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVDYWNoZTo6bG9jYWxU
aW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gsIFdURjo6VGkKICAgICByZXR1
cm4gb2Zmc2V0OwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91
ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQotewotICAgIHJldHVybiAoKCho
b3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUg
KyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKLX0KLQogZG91YmxlIERhdGVDYWNoZTo6
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3VibGUg
bWlsbGlzZWNvbmRzLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CiAgICAgZG91Ymxl
IGRheSA9IGRhdGVUb0RheXNGcm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgpLCB0Lm1vbnRoRGF5
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDI5N2ZjZDY5OGZmYmE5NGI3NzI2ZGU2N2QxOWIyNDI1OTcwM2EzMmIuLjMxYTdi
NjY4MjFkY2I1NGNjY2YwNGEyZDFjYTI1OWJlZjZkOWUwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNSw2ICsyMDUsOCBA
QAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgpA
QCAtMTIzNyw2ICsxMjM5LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAg
ICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisg
ICAgICAgIG1faW5zdGFudFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQ
cm90b3R5cGUgPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBp
bml0LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIGluc3RhbnRQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1f
cGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0
aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTMxLDYg
KzIxNDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbnN0YW50U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDk2MWMyNDdlOWE3OTJhMWFmZTZjOWM5ODk0MDc2ZjE0ZjcwODJkZWEuLjMyMTRi
OGFjZjdkZWVlYmZhZGMwYTBiZWE1ZWQyNTEzZWY5YWRiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI5LDYgKzMyOSw3IEBAIHB1
YmxpYzoKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2Nh
bGVuZGFyU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2luc3RhbnRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCkBA
IC04ODAsNiArODgxLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4g
bV9pbnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGxhaW5UaW1l
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggZmI2MDc0Y2I4NTg0ZjljYzgwYWFiN2UyYjQx
MWFmNjBkMmIxZjBkNi4uZWQ5ZjhmNTExNDEyMTBmMGJjMDY5YjVjZTNhOTgxYjAxMWVlYmIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTg4LDIwICs4OSwyMCBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0
aW9uOjpmcm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAg
SVNPODYwMTo6RHVyYXRpb24gcmVzdWx0OwogICAgIGF1dG8gaGFzUmVsZXZhbnRQcm9wZXJ0eSA9
IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRz
OyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0KGdsb2Jh
bE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCBzdGF0aWNfY2FzdDxUZW1wb3Jh
bFVuaXQ+KGkpKSk7CisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IHRlbXBvcmFsVW5pdHNJ
blRhYmxlT3JkZXIpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0
KGdsb2JhbE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCB1bml0KSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdFtpXSA9IDA7CisgICAgICAgICAg
ICByZXN1bHRbdW5pdF0gPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAog
ICAgICAgICBoYXNSZWxldmFudFByb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0W2ldID0g
dmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmVzdWx0W3VuaXRdID0gdmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAotICAgICAgICBpZiAoIWlzSW50ZWdlcihyZXN1bHRbaV0pKSB7CisgICAg
ICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0XSkpIHsKICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGll
cyBtdXN0IGJlIGludGVnZXJzIl9zKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
IH0KQEAgLTE2NCw2ICsxNjUsMzEgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlv
bjo6dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICByZXR1
cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3Ry
dWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKKy8vIFRvTGltaXRlZFRlbXBvcmFsRHVy
YXRpb24gKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgZGlzYWxsb3dlZEZpZWxkcyApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b2xpbWl0ZWR0ZW1w
b3JhbGR1cmF0aW9uCitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0
ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1
ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRzKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9
IHRvSVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFpc1ZhbGlkRHVyYXRpb24oZHVy
YXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lz
dGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBmb3IgKFRl
bXBvcmFsVW5pdCB1bml0IDogZGlzYWxsb3dlZFVuaXRzKSB7CisgICAgICAgIGlmIChkdXJhdGlv
blt1bml0XSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIG1ha2VTdHJpbmcoIkFkZGluZyAiX3MsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwg
dW5pdCkucHVibGljTmFtZSgpLCAicyBub3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLkluc3RhbnQu
IFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisK
IFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpAQCAtMjMwLDIwICsyNTYsMjAgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVt
cG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCoKIAogICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRvIGhhc1JlbGV2YW50
UHJvcGVydHkgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVt
cG9yYWxVbml0czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2Ut
PmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwgc3RhdGljX2Nh
c3Q8VGVtcG9yYWxVbml0PihpKSkpOworICAgIGZvciAoVGVtcG9yYWxVbml0IHVuaXQgOiB0ZW1w
b3JhbFVuaXRzSW5UYWJsZU9yZGVyKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlv
bkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2bSwgdW5p
dCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBtX2R1
cmF0aW9uW2ldOworICAgICAgICAgICAgcmVzdWx0W3VuaXRdID0gbV9kdXJhdGlvblt1bml0XTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaGFzUmVsZXZhbnRQ
cm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdFtpXSA9IHZhbHVlLnRvTnVtYmVyKGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIHJlc3VsdFt1bml0XSA9IHZhbHVlLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICAg
ICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W2ldKSkgeworICAgICAgICBpZiAoIWlzSW50ZWdlcihy
ZXN1bHRbdW5pdF0pKSB7CiAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBpbnRlZ2VycyJf
cyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggODJmMmQ1ZDY1YzIy
YWM0YzQwN2M4NjM0MzQyZmY2NjljYTBhMTg5Ni4uZDI3NzIwOWNkZGQ3NzViMTE1ZDE3ZDFlMWNl
ZmMxNDI3N2Q0ODA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9J
TkZPOwogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIHRvVGVtcG9yYWxEdXJhdGlvbihK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBJU084NjAxOjpEdXJhdGlvbiB0
b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiAgICAgc3RhdGljIFRlbXBv
cmFsRHVyYXRpb24qIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMg
SlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJkNTFmMjA4OWI0ZjNhOGM1ZmRhOWQ1MmRhMmYxZWYzM2Q4OTY5NzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnQuY3BwCkBAIC0wLDAgKzEsNDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bEluc3RhbnQuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSVNPODYwMS5oIgor
I2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKKyNpbmNs
dWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gVGVtcG9yYWxJbnN0YW50OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFu
dCkgfTsKKworU3RydWN0dXJlKiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVt
cG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKKyAgICAsIG1fZXhhY3RUaW1lKGV4YWN0VGltZSkKK3sKK30KKworVGVtcG9yYWxJbnN0YW50
KiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJ
U084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lKQoreworICAgIEFTU0VSVChleGFjdFRpbWUuaXNW
YWxpZCgpKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxU
ZW1wb3JhbEluc3RhbnQ+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnQodm0sIHN0cnVjdHVyZSwg
ZXhhY3RUaW1lKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4g
b2JqZWN0OworfQorCisvLyBDcmVhdGVUZW1wb3JhbEluc3RhbnQgKCBlcG9jaE5hbm9zZWNvbmRz
IFsgLCBuZXdUYXJnZXQgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmco
ZXhhY3RUaW1lLmFzU3RyaW5nKCksICIgZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiBz
dXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3Ry
dWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cit9
CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTmFub3Nl
Y29uZHMgPSB2YWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50
KGVwb2NoTmFub3NlY29uZHMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBJbnQxMjggZDAgeyBi
aWdpbnQtPmxlbmd0aCgpID4gMCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwIH07CisgICAgSW50MTI4
IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEpIDogMCB9OworICAg
IEludDEyOCBkMiB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAyID8gYmlnaW50LT5kaWdpdCgyKSA6IDAg
fTsKKyAgICBJbnQxMjggdG90YWwgeyBkMiA8PCA2NCB8IGQxIDw8IDMyIHwgZDAgfTsKKyAgICBi
b29sIGJpZ0ludFRvb0xvbmcgPSBiaWdpbnQtPmxlbmd0aCgpID4gMzsKKyNlbHNlCisgICAgSW50
MTI4IGxvdyB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDAgfTsK
KyAgICBJbnQxMjggaGlnaCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgx
KSA6IDAgfTsKKyAgICBJbnQxMjggdG90YWwgeyBoaWdoIDw8IDY0IHwgbG93IH07CisgICAgYm9v
bCBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisjZW5kaWYKKyAgICBJU084
NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsgdG90YWwgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6
IDEpIH07CisKKyAgICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkg
eworICAgICAgICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9i
amVjdCwgMTApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAg
IHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUg
Z2l2ZW4gbnVtYmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0
cmluZyksICIgZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJh
bmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGds
b2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1Rl
bXBvcmFsSW5zdGFudCAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojp0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBpdGVtVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFs
dWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8
VGVtcG9yYWxJbnN0YW50Kj4oaXRlbVZhbHVlKTsKKworICAgIC8vIEZJWE1FOiB3aGVuIFRlbXBv
cmFsLlpvbmVkRGF0ZVRpbWUgbGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRl
bXBvcmFsWm9uZWREYXRlVGltZT4odm0pKQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3Rh
bnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxU
ZW1wb3JhbFpvbmVkRGF0ZVRpbWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBT
dHJpbmcgc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEV4
YWN0VGltZSA9IElTTzg2MDE6OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2Vk
RXhhY3RUaW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBtYWtlU3RyaW5nKCInIl9zLCBlbGxpcHNpemVBdCgxMDAsIHN0cmluZyksICInIGlzIG5vdCBh
IHZhbGlkIFRlbXBvcmFsLkluc3RhbnQgc3RyaW5nIl9zKSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ5Q3JlYXRlSWZW
YWxpZChnbG9iYWxPYmplY3QsIHBhcnNlZEV4YWN0VGltZS52YWx1ZSgpKSk7Cit9CisKKy8vIFRl
bXBvcmFsLkluc3RhbnQuZnJvbSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tCitUZW1wb3JhbEluc3RhbnQqIFRl
bXBvcmFsSW5zdGFudDo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBp
ZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKSB7CisgICAgICAgIElT
Tzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRl
bVZhbHVlKS0+ZXhhY3RUaW1lKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7Cit9
CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVwb2NoU2Vjb25kcyAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0
YW50LmZyb21lcG9jaHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBv
Y2hTZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9j
aFNlY29uZHMgPSBlcG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVtYmVyVG9C
aWdJbnQgc3RlcCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRzKSkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaFNl
Y29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggc2Vjb25kcyJf
cykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJU084NjAxOjpFeGFj
dFRpbWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hTZWNvbmRzKGVw
b2NoU2Vjb25kcyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZh
bGlkKGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTWlsbGlzZWNvbmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQorLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2ht
aWxsaXNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hN
aWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1p
bGxpc2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgZXBv
Y2hNaWxsaXNlY29uZHMgPSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAv
LyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vj
b25kcykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1h
a2VTdHJpbmcoZXBvY2hNaWxsaXNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1i
ZXIgb2YgZXBvY2ggbWlsbGlzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFj
dFRpbWU6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhlcG9jaE1pbGxpc2Vjb25kcyk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhh
Y3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRz
ICggZXBvY2hNaWNyb3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWNyb3NlY29uZHMKK1RlbXBvcmFs
SW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzID0gZXBv
Y2hNaWNyb3NlY29uZHNWYWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFz
SGVhcEJpZ0ludChlcG9jaE1pY3Jvc2Vjb25kcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJv
b2wgYmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworI2Vsc2UKKyAgICBib29s
IGJpZ0ludFRvb0xvbmcgPSBiaWdpbnQtPmxlbmd0aCgpID4gMTsKKyNlbmRpZgorICAgIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1p
Y3Jvc2Vjb25kcyhKU0JpZ0ludDo6dG9CaWdVSW50NjQoYmlnaW50KSk7CisKKyAgICBpZiAoYmln
SW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgYXJn
QXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOworICAgICAgICBp
ZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2ggbWljcm9z
ZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50
Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVh
dGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQor
CisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzICggZXBvY2hOYW5vc2Vj
b25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC5pbnN0YW50LmZyb21lcG9jaG5hbm9zZWNvbmRzCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFs
SW5zdGFudDo6ZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzVmFsdWUpCit7CisgICAgcmV0dXJuIHRyeUNyZWF0
ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBlcG9jaE5hbm9zZWNvbmRzVmFsdWUpOworfQorCisvLyBU
ZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUgKCBvbmUsIHR3byApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmNvbXBhcmUKK0pTVmFsdWUg
VGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgb25lVmFsdWUsIEpTVmFsdWUgdHdvVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogb25lID0gdG9JbnN0YW50KGdsb2JhbE9iamVjdCwgb25l
VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIHR3byA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIHR3b1ZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9uZS0+ZXhhY3RU
aW1lKCkgPiB0d28tPmV4YWN0VGltZSgpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoMSk7Cisg
ICAgaWYgKG9uZS0+ZXhhY3RUaW1lKCkgPCB0d28tPmV4YWN0VGltZSgpKQorICAgICAgICByZXR1
cm4ganNOdW1iZXIoLTEpOworICAgIHJldHVybiBqc051bWJlcigwKTsKK30KKworSVNPODYwMTo6
RHVyYXRpb24gVGVtcG9yYWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlbXBvcmFsSW5zdGFudCogb3RoZXIsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBj
b25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGlu
dGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBv
cmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQg
PSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgVGVt
cG9yYWxVbml0IGRlZmF1bHRMYXJnZXN0VW5pdCA9IHN0ZDo6bWluKHNtYWxsZXN0VW5pdCwgVGVt
cG9yYWxVbml0OjpTZWNvbmQpOworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBvcmFsTGFyZ2VzdFVu
aXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0sIGRlZmF1bHRMYXJnZXN0VW5pdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2Vz
dFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRMYXJnZXN0VW5pdCk7CisKKyAgICBpZiAo
c21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8IGxhcmdlc3QpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBz
bWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4
SW5jcmVtZW50ID0gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCk7CisgICAg
QVNTRVJUKG1heEluY3JlbWVudCAmJiAqbWF4SW5jcmVtZW50IDw9IDEwMDApOyAvLyB1bmJvdW5k
ZWQgaW5jcmVtZW50cyBhcmUgaW1wb3NzaWJsZSB3aXRoIFRlbXBvcmFsLkluc3RhbnQKKyAgICB1
bnNpZ25lZCBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgbWF4SW5jcmVtZW50LCBmYWxzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIEludDEyOCByb3VuZGVkRGlmZiA9IGV4YWN0VGltZSgpLmRp
ZmZlcmVuY2Uob3RoZXItPmV4YWN0VGltZSgpLCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91
bmRpbmdNb2RlKTsKKyAgICAvLyBOT1RFOiBEdXJhdGlvbiBmaWVsZHMgYXJlIGN1cnJlbnRseSBk
b3VibGVzLCBhbmQgdGhlIHRvdGFsIG51bWJlciBvZgorICAgIC8vIG5hbm9zZWNvbmRzIG1heSBu
b3QgZml0IGluIGEgZG91YmxlLiBUaGlzIG1heSBuZWVkIHRvIGNoYW5nZSBpZiB0aGUKKyAgICAv
LyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBEdXJhdGlvbiBjaGFuZ2VzLgorICAgIEFTU0VS
VChyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcwMDAgPCBJTlQ2NF9NQVgpOworICAgIGRvdWJsZSBz
ZWNvbmRzIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2NF90Pihyb3VuZGVk
RGlmZiAvIDEnMDAwJzAwMCcwMDApKSB9OworICAgIGRvdWJsZSBuYW5vc2Vjb25kc1JlbWFpbmRl
ciB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYg
JSAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgeyAwLCAw
LCAwLCAwLCAwLCAwLCBzZWNvbmRzLCAwLCAwLCBuYW5vc2Vjb25kc1JlbWFpbmRlciB9OworCisg
ICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgZG91YmxlIG1heGltdW1JbmNyZW1lbnQoVGVtcG9y
YWxVbml0IHNtYWxsZXN0VW5pdCkKK3sKKyAgICBzd2l0Y2ggKHNtYWxsZXN0VW5pdCkgeworICAg
IGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiByZXR1cm4gMjQ7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6Ok1pbnV0ZTogcmV0dXJuIDE0NDA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDog
cmV0dXJuIDg2NDAwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogcmV0dXJu
IDguNjRlNzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHJldHVybiA4LjY0
ZTEwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiByZXR1cm4gOC42NGUxMzsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6WWVhcjoKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TW9u
dGg6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OldlZWs6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6
OkRheToKKyAgICBkZWZhdWx0OgorICAgICAgICB7IH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworSVNPODYwMTo6RXhhY3RUaW1lIFRlbXBvcmFsSW5zdGFu
dDo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFs
dWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25z
ID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNtYWxsZXN0ID0g
dGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5p
dDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3Jh
bFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVu
aXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAg
Um91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9i
amVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGluY3JlbWVudCA9IHRlbXBvcmFs
Um91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhpbXVtSW5jcmVtZW50
KHNtYWxsZXN0VW5pdCksIHRydWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICByZXR1cm4gZXhhY3RUaW1lKCkucm91bmQoaW5jcmVtZW50LCBzbWFsbGVzdFVu
aXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRv
U3RyaW5nKCBbIG9wdGlvbnMgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LnByb3RvdHlwZS50b3N0cmluZworU3RyaW5nIFRlbXBv
cmFsSW5zdGFudDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2Jq
ZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAo
IW9wdGlvbnMpCisgICAgICAgIHJldHVybiB0b1N0cmluZygpOworCisgICAgSlNPYmplY3QqIHRp
bWVab25lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHRpbWVab25lVmFsdWUgPSBvcHRpb25zLT5n
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9uZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIXRpbWVab25lVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICB0aW1lWm9uZSA9IFRlbXBvcmFsVGltZVpvbmU6OmZyb20oZ2xv
YmFsT2JqZWN0LCB0aW1lWm9uZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICB9CisKKyAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3Ry
aW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1w
b3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1
bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBObyBu
ZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVmYXVs
dHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNpb246OkF1
dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCisgICAgICAgIHJldHVy
biB0b1N0cmluZyh0aW1lWm9uZSk7CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgbmV3RXhhY3RU
aW1lIHsgZXhhY3RUaW1lKCkucm91bmQoZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRp
bmdNb2RlKSB9OworCisgICAgLy8gRklYTUU6IE1pc3NpbmcsIHJlbGllcyBvbiBUaW1lWm9uZToK
KyAgICAvLyAxLiBMZXQgcm91bmRlZEluc3RhbnQgYmUgISBDcmVhdGVUZW1wb3JhbEluc3RhbnQo
cm91bmRlZE5zKS4KKyAgICAvLyAuLi4KKyAgICAvLyAxLiBJZiBfb3V0cHV0VGltZVpvbmVfIGlz
ICp1bmRlZmluZWQqLCB0aGVuCisgICAgLy8gICAxLiBTZXQgX291dHB1dFRpbWVab25lXyB0byAh
IENyZWF0ZVRlbXBvcmFsVGltZVpvbmUoKiJVVEMiKikuCisgICAgLy8gMS4gTGV0IF9pc29DYWxl
bmRhcl8gYmUgISBHZXRJU084NjAxQ2FsZW5kYXIoKS4KKyAgICAvLyAxLiBMZXQgX2RhdGVUaW1l
XyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldFBsYWluRGF0ZVRpbWVGb3IoX291dHB1dFRpbWVab25l
XywgX2luc3RhbnRfLCBfaXNvQ2FsZW5kYXJfKS4KKyAgICBKU09iamVjdCogb3V0cHV0VGltZVpv
bmUgPSB0aW1lWm9uZTsKKyAgICBpZiAob3V0cHV0VGltZVpvbmUpIHsKKyAgICAgICAgdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGSVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0
cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50ZWQgeWV0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9TdHJpbmcobmV3RXhhY3RUaW1lLCB0aW1lWm9u
ZSwgZGF0YSk7Cit9CisKKy8vIFRlbXBvcmFsSW5zdGFudFRvU3RyaW5nICggaW5zdGFudCwgdGlt
ZVpvbmUsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC10ZW1wb3JhbGluc3RhbnR0b3N0cmluZworU3RyaW5nIFRlbXBvcmFsSW5z
dGFudDo6dG9TdHJpbmcoSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSwgSlNPYmplY3QqIHRp
bWVab25lLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBHcmVnb3JpYW5EYXRlVGlt
ZSBncmVnb3JpYW5EYXRlVGltZSB7IHN0YXRpY19jYXN0PGRvdWJsZT4oZXhhY3RUaW1lLmVwb2No
TWlsbGlzZWNvbmRzKCkpLCBMb2NhbFRpbWVPZmZzZXQgeyB9IH07CisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworCisgICAgLy8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0aGUgYm91bmRzIG9m
IDEwMDAgYW5kIDk5OTkgaW5jbHVzaXZlIHdlIHdhbnQgdG8KKyAgICAvLyB1c2UgdGhlIGV4dGVu
ZGVkIHllYXIgZm9ybWF0IChQYWRJU09ZZWFyKS4KKyAgICB1bnNpZ25lZCB5ZWFyTGVuZ3RoID0g
NDsKKyAgICBpZiAoZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpID4gOTk5OSB8fCBncmVnb3JpYW5E
YXRlVGltZS55ZWFyKCkgPCAxMDAwKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGdyZWdvcmlh
bkRhdGVUaW1lLnllYXIoKSA8IDAgPyAnLScgOiAnKycpOworICAgICAgICB5ZWFyTGVuZ3RoID0g
NjsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHBhZCgnMCcsIHllYXJM
ZW5ndGgsIHN0ZDo6YWJzKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSkpLAorICAgICAgICAnLScs
IHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoKCkgKyAxKSwKKyAgICAgICAgJy0n
LCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5tb250aERheSgpKSwKKyAgICAgICAgJ1Qn
LCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5ob3VyKCkpLAorICAgICAgICAnOicsIHBh
ZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLm1pbnV0ZSgpKSkpOworCisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgbnNQZXJTZWNvbmQgeyAxJzAwMCcwMDAnMDAwIH07CisgICAgaW50IGZyYWN0
aW9uIHsgZXhhY3RUaW1lLm5hbm9zZWNvbmRzRnJhY3Rpb24oKSB9OworICAgIGlmIChmcmFjdGlv
biA8IDApCisgICAgICAgIGZyYWN0aW9uICs9IG5zUGVyU2Vjb25kOworCisgICAgZm9ybWF0U2Vj
b25kc1N0cmluZ1BhcnQoYnVpbGRlciwgZ3JlZ29yaWFuRGF0ZVRpbWUuc2Vjb25kKCksIGZyYWN0
aW9uLCBwcmVjaXNpb24pOworCisgICAgaWYgKHRpbWVab25lKSB7CisgICAgICAgIC8vIEZJWE1F
OiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgICAgIC8vICAgMS4gTGV0IF90aW1l
Wm9uZVN0cmluZ18gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRPZmZzZXRTdHJpbmdGb3IoX3RpbWVa
b25lXywgX2luc3RhbnRfKS4KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKKworICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzZlYmQ3ODBhM2Ew
NDk5YjQ2MDZkNDc1NmM0ZTA1NmQxN2M3MmFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgKQEAgLTAsMCArMSw4NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gdm0udGVtcG9yYWxJbnN0YW50U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpFeGFjdFRp
bWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9i
YWxPYmplY3QqLCBJU084NjAxOjpFeGFjdFRpbWUsIFN0cnVjdHVyZSogPSBudWxscHRyKTsKKyAg
ICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSwgU3RydWN0dXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0b0luc3RhbnQoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9t
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCog
ZnJvbUVwb2NoU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBU
ZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE1pY3Jvc2Vjb25k
cyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQq
IGZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwor
CisgICAgY29uc3RleHByIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2V4YWN0VGltZS5nZXQoKTsgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVy
ZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsSW5zdGFudCosIEpTVmFsdWUgb3B0aW9ucykg
Y29uc3Q7CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCog
dGltZVpvbmUgPSBudWxscHRyLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNp
b246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gdG9TdHJpbmcoZXhhY3RUaW1lKCksIHRpbWVab25lLCBwcmVjaXNp
b24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1
cmUqLCBJU084NjAxOjpFeGFjdFRpbWUpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBh
cnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNP
ODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwor
CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhJU084NjAxOjpFeGFjdFRpbWUsIEpTT2JqZWN0
KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7CisKKyAgICBQYWNrZWQ8SVNPODYwMTo6RXhhY3RU
aW1lPiBtX2V4YWN0VGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYTQyODBhMWNlNjcwOTBhNjc4MTNjMjE4NjViMmM1ZTNl
ZWI2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bUVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1
bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVk
ZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFi
bGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgK
K0BiZWdpbiB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAg
ICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaFNlY29uZHMgICAgICAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaE1pbGxpc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZy
b21FcG9jaE1pY3Jvc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVw
b2NoTWljcm9zZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE5hbm9zZWNv
bmRzICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAgICAgICAgdGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCit7CisgICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFudFByb3Rv
dHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5h
bEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxJbnN0YW50KTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCk7CisKK1RlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVt
cG9yYWxJbnN0YW50LCBjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpCit7Cit9CisKK3ZvaWQgVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAxLCAiSW5zdGFudCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBpbnN0YW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgaW5zdGFudFByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChj
YWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19H
RVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIGluc3RhbnRTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2Fs
bEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWly
ZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5z
dGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIHN0cnVjdHVyZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNhbGxUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnN0YW50IikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxp
c2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21F
cG9jaE1pY3Jvc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5z
dGFudDo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDk4N2Q5ZGUzMjAx
YjJjODNhZjNkZWRlMmEyMTg5NWE4ZjJmNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOworCitjbGFzcyBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgor
ICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSopOworfTsKK1NU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MWJkZGZiZjJmMWZiYjJkOTI2MjM4MGFiMjVlZDdmNjE1NWYy
ZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJU084
NjAxLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY0FkZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVG9Mb2NhbGVTdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdl
dHRlckVwb2NoTmFub3NlY29uZHMpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJh
c2U6OnNfaW5mbywgJmluc3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxl
CisgIGFkZCAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAg
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgdW50aWwgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNVbnRpbCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAg
ICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1JvdW5kICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgZXF1YWxzICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMAorICB0b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
RnVuY1RvSlNPTiAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVT
dHJpbmcgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAor
ICBlcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hT
ZWNvbmRzICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWls
bGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25k
cyAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMg
IHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51
bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5
fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisgICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19U
QUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0
aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7Cisg
ICAgVGVtcG9yYWxVbml0OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVt
cG9yYWxVbml0OjpXZWVrLAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAorfTsKKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRp
b24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxJU084NjAx
OjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZChkdXJh
dGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCBy
YW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0
ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCAqbmV3RXhhY3RUaW1lKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3QsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBJU084NjAxOjpEdXJhdGlv
biBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0aW9uKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PElTTzg2MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RUaW1lID0gaW5zdGFudC0+ZXhhY3RUaW1lKCku
YWRkKC1kdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTdWJ0cmFjdGlvbiBpcyBvdXRzaWRlIG9m
IHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3Rh
bnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCAqbmV3RXhhY3RUaW1lKSk7Cit9CisK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVW50
aWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnVudGlsIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIG90aGVyID0gVGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAg
ICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgPSBpbnN0YW50LT5kaWZmZXJlbmNlKGdsb2JhbE9i
amVjdCwgb3RoZXIsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNTaW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBp
bnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUu
c2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpOworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdCA9IG90aGVyLT5kaWZmZXJlbmNlKGds
b2JhbE9iamVjdCwgaW5zdGFudCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUo
cmVzdWx0KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnBy
b3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOwor
CisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAo
b3B0aW9ucy5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgcmVx
dWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfcyk7CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUg
bmV3RXhhY3RUaW1lID0gaW5zdGFudC0+cm91bmQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50
U3RydWN0dXJlKCksIG5ld0V4YWN0VGltZSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFscywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9y
YWxJbnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaW5zdGFudC0+ZXhhY3RUaW1lKCkgPT0gb3RoZXItPmV4
YWN0VGltZSgpKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5n
KCBbIG9wdGlvbnMgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC5pbnN0YW50LnByb3RvdHlwZS50b3N0cmluZworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZyhnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoKSkpKTsKK30K
KworLy8gRklYTUU6IElzIHRoaXMgYmV0dGVyIGFzIGEgSlNCdWlsdGluPworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9Mb2NhbGVTdHJp
bmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIEludGxE
YXRlVGltZUZvcm1hdCogZm9ybWF0dGVyID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGZvcm1hdHRlci0+aW5pdGlhbGl6ZURhdGVU
aW1lRm9ybWF0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIC8vIEZJWE1FOiBjaGFuZ2UgSW50bERhdGVUaW1lRm9ybWF0IHRvIHVzZSBlcG9jaE5hbm9z
ZWNvbmRzCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9y
bWF0dGVyLT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE1p
bGxpc2Vjb25kcygpKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90
eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIEluc3RhbnQgdmFsdWVz
LCB1c2UgVGVtcG9yYWwuSW5zdGFudC5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25kcywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50
KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLmVwb2NoU2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQi
X3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnN0YW50LT5leGFj
dFRpbWUoKS5lcG9jaFNlY29uZHMoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlw
ZS5lcG9jaE1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQi
X3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnN0YW50LT5leGFj
dFRpbWUoKS5lcG9jaE1pbGxpc2Vjb25kcygpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50
KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLmVwb2NoTWljcm9zZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5z
dGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShKU0JpZ0ludDo6bWFrZUhlYXBCaWdJbnRPckJpZ0ludDMyKGdsb2JhbE9iamVjdCwgaW5zdGFu
dC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWNyb3NlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29u
ZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS5lcG9jaE5hbm9zZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbShnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0
VGltZSgpLmVwb2NoTmFub3NlY29uZHMoKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZGRmYjE0Njk4OTc4YjhjMDdlMThiMjBlYzkzZDM5
MmQ3OTgzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKaW5kZXggODNjZDVkYjBkOTNkMGFiZjljMmFlYWE0OTU3ZTkyOWU5ODhjNDZkMi4uMWVh
MmI0ZjEzOTE0YzdmNmU1OTAyMjc4Yzk1MWNlNGEwZGEzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAtMzIsMTEgKzMyLDE0
IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsTm93
LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9u
ZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIgor
I2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKQEAgLTY1
LDYgKzY4LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0m
IHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBUZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgp
KSwganNDYXN0PFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmR1cmF0
aW9uU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBK
U1ZhbHVlIGNyZWF0ZUluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
Cit7CisgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFs
T2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGVt
cG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwganNDYXN0PFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+
aW5zdGFudFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQorCiBzdGF0
aWMgSlNWYWx1ZSBjcmVhdGVQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBv
YmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRl
bXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAgLTg5LDYgKzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBAYmVnaW4gdGVtcG9yYWxPYmplY3RUYWJsZQogICBDYWxlbmRhciAgICAgICBjcmVhdGVDYWxl
bmRhckNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgRHVyYXRp
b24gICAgICAgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCisgIEluc3RhbnQgICAgICAgIGNyZWF0ZUluc3RhbnRDb25zdHJ1Y3RvciAgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVOb3dP
YmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgUGxhaW5U
aW1lICAgICAgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCiAgIFRpbWVab25lICAgICAgIGNyZWF0ZVRpbWVab25lQ29uc3RydWN0b3IgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawpAQCAtMzQ5LDYgKzM2MCwxNyBAQCB2b2lkIGZv
cm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25l
ZCBmcmFjdGlvbiwgc3RkOgogICAgIH0KIH0KIAorLy8gRm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQg
KCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29uZCwgcHJlY2lzaW9u
ICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWZv
cm1hdHNlY29uZHNzdHJpbmdwYXJ0Cit2b2lkIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIHNlY29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFBy
ZWNpc2lvbkRhdGEgcHJlY2lzaW9uKQoreworICAgIGlmIChwcmVjaXNpb24udW5pdCA9PSBUZW1w
b3JhbFVuaXQ6Ok1pbnV0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYnVpbGRlci5hcHBlbmQo
JzonLCBwYWQoJzAnLCAyLCBzZWNvbmQpKTsKKyAgICBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rp
b24oYnVpbGRlciwgZnJhY3Rpb24sIHByZWNpc2lvbi5wcmVjaXNpb24pOworfQorCiAvLyBNYXhp
bXVtVGVtcG9yYWxEdXJhdGlvblJvdW5kaW5nSW5jcmVtZW50ICggdW5pdCApCiAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1tYXhpbXVtdGVtcG9yYWxk
dXJhdGlvbnJvdW5kaW5naW5jcmVtZW50CiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJv
dW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5pdCB1bml0KQpAQCAtNDEwLDYgKzQzMiw0MyBAQCBk
b3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUgeCwgZG91YmxlIGluY3JlbWVudCwg
Um91bmRpbmdNb2RlIG1vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAorc3RhdGljIEludDEyOCBhYnMoSW50MTI4IHgpCit7CisgICAgcmV0dXJuIHggPCAwID8gLXgg
OiB4OworfQorCisvLyBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBJbnQxMjgKK0ludDEyOCByb3Vu
ZE51bWJlclRvSW5jcmVtZW50KEludDEyOCB4LCBJbnQxMjggaW5jcmVtZW50LCBSb3VuZGluZ01v
ZGUgbW9kZSkKK3sKKyAgICBpZiAoaW5jcmVtZW50ID09IDEpCisgICAgICAgIHJldHVybiB4Owor
CisgICAgSW50MTI4IHF1b3RpZW50ID0geCAvIGluY3JlbWVudDsKKyAgICBJbnQxMjggcmVtYWlu
ZGVyID0geCAlIGluY3JlbWVudDsKKyAgICBpZiAoIXJlbWFpbmRlcikKKyAgICAgICAgcmV0dXJu
IHg7CisKKyAgICBib29sIHNpZ24gPSByZW1haW5kZXIgPCAwOworICAgIHN3aXRjaCAobW9kZSkg
eworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICBpZiAoIXNpZ24pCisgICAg
ICAgICAgICBxdW90aWVudCsrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Rmxvb3I6CisgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgcXVvdGllbnQtLTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgLy8gImhhbGYg
dXAgYXdheSBmcm9tIHplcm8iCisgICAgICAgIGlmIChhYnMocmVtYWluZGVyICogMikgPj0gaW5j
cmVtZW50KQorICAgICAgICAgICAgcXVvdGllbnQgKz0gc2lnbiA/IC0xIDogMTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBxdW90aWVudCAqIGluY3JlbWVudDsKK30KKwogVGVt
cG9yYWxPdmVyZmxvdyB0b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9y
YWxPdmVyZmxvdz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJv
cGVydHlOYW1lcy0+b3ZlcmZsb3csCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuaAppbmRleCBjNGIxZDQ3MjZiMzQ2ZDUxOWE1NmZhYTMyMTZiZGZjODhl
OTkyMTgzLi43YmEzZjE0YWNjNjVmYzQ0MTU2YTA3ZDRmNjAyODg3YjEwMTI1ZTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKQEAgLTIxLDYg
KzIxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
IDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC01Miw2ICs1MywyMCBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9m
VGVtcG9yYWxVbml0cyA9IDAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19DT1VOVAogc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHMgPSAwIEpTQ19U
RU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyk7CiAjdW5k
ZWYgSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTCiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jdGFibGUtdGVtcG9yYWwtdGVtcG9yYWxkdXJhdGlvbmxpa2UtcHJvcGVydGll
cworc3RhdGljIGNvbnN0ZXhwciBUZW1wb3JhbFVuaXQgdGVtcG9yYWxVbml0c0luVGFibGVPcmRl
cltudW1iZXJPZlRlbXBvcmFsVW5pdHNdID0geworICAgIFRlbXBvcmFsVW5pdDo6RGF5LAorICAg
IFRlbXBvcmFsVW5pdDo6SG91ciwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLAorICAg
IFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsCisgICAgVGVtcG9yYWxVbml0OjpNaW51dGUsCisg
ICAgVGVtcG9yYWxVbml0OjpNb250aCwKKyAgICBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsCisg
ICAgVGVtcG9yYWxVbml0OjpTZWNvbmQsCisgICAgVGVtcG9yYWxVbml0OjpXZWVrLAorICAgIFRl
bXBvcmFsVW5pdDo6WWVhciwKK307CisKIGNsYXNzIFRlbXBvcmFsT2JqZWN0IGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZp
bmFsT2JqZWN0OwpAQCAtMTAyLDkgKzExNywxMSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0
ZW1wb3JhbEZyYWN0aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAog
UHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIG9wdGlvbnMpOwogUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqLCBSb3VuZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRz
U3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1
cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+KTsKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQo
U3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIHNlY29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNp
c2lvbkRhdGEpOwogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVu
dChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlk
ZW5kLCBib29sIGluY2x1c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3Vi
bGUsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJU
b0luY3JlbWVudChJbnQxMjgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVu
dW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA5OTZhMDZkYWFiYTgyY2NlZmI0M2RmM2Y2
NWYxMzFlNmZkZTZlZTA3Li40OGZkNmM5YTY2OWY1MjJjZTQ3M2EyYTM3MjE0ZDhmNjhhNjU1ZWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjQsNiArMTY0LDcgQEAK
ICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFu
dC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxU
aW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgpAQCAtMTU5MSw2ICsxNTky
LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVj
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgVGVtcG9yYWxJbnN0YW50KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlbXBvcmFsUGxhaW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9y
YWxUaW1lWm9uZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50
OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDdhNThiMjc5ZTY3MGE4NDAzZDFmMzk0MTIzNTdk
NWU3NzExM2Y1NzguLmFiYTJmNjZhMDdiMzdiMTVjNTg1YTJmODZmMGI2Y2U0ZjJmMjg2NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTg2LDYgKzE4Niw3IEBAIGNsYXNzIFJl
Z0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2Ns
YXNzIFRlbXBvcmFsSW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC01OTcs
NiArNTk4LDcgQEAgcHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25l
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5
U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dU
Ri93dGYvRGF0ZU1hdGguaAppbmRleCBkZTBiNDViZDBhODhlYWJhNDY2YjZlNmMwYWQ2NmRjMDJm
NTI1NzQxLi43YmIyN2U5OTc2ZmIxNGUwNmZhNGVlNDg1NTM2MTdmY2EwNmQ4ZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmgKQEAgLTM4OCw2ICszODgsMTEgQEAgaW5saW5lIGludCBkYXlJbk1vbnRoRnJvbURheUlu
WWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKQogICAgIHJldHVybiBkIC0gc3RlcDsK
IH0KIAoraW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91
YmxlIHNlYywgZG91YmxlIG1zKQoreworICAgIHJldHVybiAoKChob3VyICogV1RGOjptaW51dGVz
UGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1Bl
clNlY29uZCArIG1zKTsKK30KKwogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlz
ZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNh
bGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBl
ID0gVVRDVGltZSk7CiAKQEAgLTQxMCw2ICs0MTUsNyBAQCB1c2luZyBXVEY6Om1zVG9Ib3VyczsK
IHVzaW5nIFdURjo6c2Vjb25kc1BlckRheTsKIHVzaW5nIFdURjo6c2Vjb25kc1Blck1pbnV0ZTsK
IHVzaW5nIFdURjo6cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVyczsKK3VzaW5n
IFdURjo6dGltZVRvTVM7CiB1c2luZyBXVEY6Om1ha2VSRkMyODIyRGF0ZVN0cmluZzsKIHVzaW5n
IFdURjo6TG9jYWxUaW1lT2Zmc2V0OwogdXNpbmcgV1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZz
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaCBiL1NvdXJjZS9XVEYvd3Rm
L0ludDEyOC5oCmluZGV4IDY1ZmU4MzI0M2EyMDgzYWNjZmM2OWMwYzYzNWQ1NmE4ODAzNDU2NDAu
LjJkZDUwNDRiYWUxMDMxNTA2YjllZTEyNmQ3YmVmZmRjMGExOGJjODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ludDEyOC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCkBAIC00
Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICAgICAgOiBsb3dfIHtzdGF0aWNfY2FzdDxzdGQ6OnVp
bnQ2NF90PihuKX0KICAgICAgICAgLCBoaWdoXyB7LXN0YXRpY19jYXN0PHN0ZDo6dWludDY0X3Q+
KG4gPCAwKX0KICAgICB7IH0KKyAgICBjb25zdGV4cHIgSW50MTI4SW1wbChjb25zdCBJbnQxMjhJ
bXBsPCFJU19TSUdORUQ+IG4pCisgICAgICAgIDogbG93XyB7IG4ubG93KCkgfSwgaGlnaF8geyBu
LmhpZ2goKSB9IHsgfQogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKGNvbnN0IEludDEyOEltcGwg
JikgPSBkZWZhdWx0OwogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKEludDEyOEltcGwgJiYpID0g
ZGVmYXVsdDsKICAgICBjb25zdGV4cHIgSW50MTI4SW1wbCAmb3BlcmF0b3I9KGNvbnN0IEludDEy
OEltcGwgJikgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCAxMWM4NDcwZjY3M2VkOGZlMzEwNDJlNmFmNzIyYjEwNWMzOTMx
MjlhLi5mNTRiMzYyNTNiMzcxY2I3M2UwMjllYjVkMzE2YjM2MGQwNjk1MGIxIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDIxLTA5LTIzICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9AZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy90ZW1wb3Jh
bC1pbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZE5vdEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGluc3RhbnRzLmZvckVh
Y2gpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LlRlbXBvcmFsLkluc3RhbnQpOgorICAgICAg
ICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6IE5vIG5lZWQgdG8gaWdub3JlIGFsbCBUZW1wb3JhbC5J
bnN0YW50IHRlc3RzCisgICAgICAgICAgYW55bW9yZSwgb25seSB0aGUgb25lcyBmb3IgdGhlIHVu
aW1wbGVtZW50ZWQgbWV0aG9kcy4KKwogMjAyMS0xMC0wNCAgUGhpbGlwIENoaW1lbnRvICA8cGNo
aW1lbnRvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMgYi9KU1Rlc3RzL3N0cmVz
cy90ZW1wb3JhbC1pbnN0YW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMTM0NTlkYzQ5OGQyNzg1ZTQ5MTE2
OGM2ZTEwZmFhNzdiZWE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1w
b3JhbC1pbnN0YW50LmpzCkBAIC0wLDAgKzEsMjkyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlVGVtcG9yYWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBl
eHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBz
aG91bGROb3RCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgYSB2YWx1ZSB0byBiZSBkaWZm
ZXJlbnQgZnJvbSAke2V4cGVjdGVkfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAg
ICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2Fn
ZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAgICAgICBpZiAo
IW1lc3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21lc3NhZ2V9IWAp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwg
bWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIGVwb2NoCit7CisgICAgY29uc3Qg
aW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaE5hbm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTcwLTAxLTAxVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5z
dGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgMCk7Cisg
ICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIDApOworICAgICAgICBz
aG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LnRvU3RyaW5nKCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LnRvSlNPTigpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKwor
Ly8gcG9zaXRpdmUgZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAg
ICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMV8wMDBfMDAwXzAwMCksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDFfMDAwXzAwMF8w
MDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMo
MV8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVw
b2NoTmFub3NlY29uZHMoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzIwMDEtMDktMDlUMDE6NDY6NDBaJyksCisgICAgXTsKKyAgICBp
bnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hTZWNvbmRzLCAxXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pbGxpc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8w
MDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzIwMDEtMDkt
MDlUMDE6NDY6NDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMDAx
LTA5LTA5VDAxOjQ2OjQwWicpOworICAgIH0pOworfQorCisvLyBuZWdhdGl2ZSBlcG9jaCB2YWx1
ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFu
dCgtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb21FcG9jaFNlY29uZHMoLTFfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDApLAorICAgICAgICBU
ZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDBf
MDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoLTFf
MDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTM4LTA0LTI0VDIyOjEzOjIwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgo
aW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgLTFf
MDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRz
LCAtMV8wMDBfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlj
cm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTkzOC0wNC0yNFQyMjoxMzoyMFon
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE5MzgtMDQtMjRUMjI6MTM6
MjBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1heGludDY0IGVwb2NoIHZhbHVlCit7CisgICAgY29u
c3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDkyMjMzNzIwMzY4
NTQ3NzU4MDduKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25k
cyg5MjIzMzcyMDM2ODU0Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDdaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCA5MjIzMzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vj
b25kcywgOTIyMzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNy
b3NlY29uZHMsIDkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE5hbm9zZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQudG9TdHJpbmcoKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44
NTQ3NzU4MDdaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbmludDY0IGVwb2NoIHZhbHVlCit7Cisg
ICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KC05MjIz
MzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFu
b3NlY29uZHMoLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKSwKKyAgICBdOworICAgIGlu
c3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaFNlY29uZHMsIC05MjIzMzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE1pbGxpc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTWljcm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1ODA4bik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1
MjI0MTkyWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTY3Ny0wOS0y
MVQwMDoxMjo0My4xNDUyMjQxOTJaJyk7CisgICAgfSk7Cit9CisKKy8vIG1heCBJbnN0YW50IHJh
bmdlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0
YW50KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaFNlY29uZHMoODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoODY0MDBfMDAwMF8wMDAwXzAwMCksCisgICAg
ICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDg2NDAwXzAwMDBfMDAw
MF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29u
ZHMoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnKzI3NTc2MC0wOS0xM1QwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRz
LmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNl
Y29uZHMsIDg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hN
aWxsaXNlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWljcm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMG4pOworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBf
MDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcrMjc1NzYw
LTA5LTEzVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAn
KzI3NTc2MC0wOS0xM1QwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gbWluIEluc3RhbnQg
cmFuZ2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLklu
c3RhbnQoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaFNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTg2NDAwXzAw
MDBfMDAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFu
b3NlY29uZHMoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBp
bnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hTZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pbGxpc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91
bGRCZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBu
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtODY0MDBfMDAw
MF8wMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmco
KSwgJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
dG9KU09OKCksICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyB0
b28gbGFyZ2UKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAw
MDBfMDAwMF8wMDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvXGI4NjQwMDAwMDAwMDAwMDAwMDAw
MDAxXGIvKTsKKy8vIHRvbyBzbWFsbAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLklu
c3RhbnQoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvLTg2NDAw
MDAwMDAwMDAwMDAwMDAwMDFcYi8pOworLy8gbGFyZ2VyIHRoYW4gbWF4aW50MTI4CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgxbiA8PCAxMjluKSwgUmFuZ2VFcnJvciwg
L1xiNjgwNTY0NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYzNTM2NDIyOTEyXGIvKTsKKy8vIHNtYWxs
ZXIgdGhhbiBtaW5pbnQxMjgKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50
KC0xbiA8PCAxMjluKSwgUmFuZ2VFcnJvciwgLy02ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4
NjM1MzY0MjI5MTJcYi8pOworLy8gZG9lcyBub3QgY3Jhc2ggd2hlbiBiaWdpbnQgbG9uZ2VyIHRo
YW4gbWF4aW50MzIgZGlnaXRzCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFu
dChCaWdJbnQoJzknLnJlcGVhdCgyMTQ3NDgzNjQ3KSkpLCBSYW5nZUVycm9yKTsKKy8vIGNvbnN0
cnVjdHMgZnJvbSBzdHJpbmcKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5JbnN0YW50KCcwJykuZXBv
Y2hOYW5vc2Vjb25kcywgMG4pOworLy8gdGhyb3dzIG9uIG51bWJlcgorc2hvdWxkVGhyb3coKCkg
PT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoMCksIFR5cGVFcnJvcik7CisvLyB0aHJvd3Mgb24gc3Ry
aW5nIHRoYXQgZG9lcyBub3QgY29udmVydCB0byBCaWdJbnQKK3Nob3VsZFRocm93KCgpID0+IG5l
dyBUZW1wb3JhbC5JbnN0YW50KCdhYmMxMjMnKSwgU3ludGF4RXJyb3IpOworCisvLyBJbnN0YW50
LmZyb20oaW5zdGFudCkgaXMgbm90IHRoZSBzYW1lIG9iamVjdAoreworICAgIGNvbnN0IGluc3Qg
PSBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzIwMjAtMDItMTJUMTE6NDIrMDE6MDBbRXVyb3BlL0Ft
c3RlcmRhbV0nKTsKKyAgICBzaG91bGROb3RCZShUZW1wb3JhbC5JbnN0YW50LmZyb20oaW5zdCks
IGluc3QpOworfQorCisvLyB0b1N0cmluZworCit7CisgICAgY29uc3QgaTEgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjNaJyk7CisgICAgY29uc3QgaTIgPSBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzBaJyk7CisgICAgY29uc3QgaTMgPSBU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKKworICAg
IC8vIGRlZmF1bHQgaXMgdG8gZW1pdCBzZWNvbmRzIGFuZCBkcm9wIHRyYWlsaW5nIHplcm9zIGFm
dGVyIHRoZSBkZWNpbWFsJworICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKCksICcxOTc2LTExLTE4
VDE1OjIzOjAwWicpOworICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1
OjIzOjMwWicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIz
OjMwLjEyMzRaJyk7CisKKyAgICAvLyB0cnVuY2F0ZXMgdG8gbWludXRlCisgICAgW2kxLCBpMiwg
aTNdLmZvckVhY2goKGkpID0+IHNob3VsZEJlKGkudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdt
aW51dGUnIH0pLCAnMTk3Ni0xMS0xOFQxNToyM1onKSk7CisKKyAgICAvLyBvdGhlciBzbWFsbGVz
dFVuaXRzIGFyZSBhbGlhc2VzIGZvciBmcmFjdGlvbmFsIGRpZ2l0cworICAgIHNob3VsZEJlKGkz
LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFj
dGlvbmFsU2Vjb25kRGlnaXRzOiAwIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNt
YWxsZXN0VW5pdDogJ21pbGxpc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vj
b25kRGlnaXRzOiAzIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5p
dDogJ21pY3Jvc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiA2IH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ25hbm9z
ZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDkgfSkpOwor
CisgICAgLy8gdHJ1bmNhdGUgb3IgcGFkIHRvIDIgcGxhY2VzCisgICAgeworICAgICAgICBjb25z
dCBvcHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAyIH07CisgICAgICAgIHNob3Vs
ZEJlKGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzowMC4wMFonKTsKKyAg
ICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMw
LjAwWicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEt
MThUMTU6MjM6MzAuMTJaJyk7CisgICAgfQorICAgIC8vIHBhZCB0byA3IHBsYWNlcworICAgIHsK
KyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNyB9Owor
ICAgICAgICBzaG91bGRCZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6
MDAuMDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcx
OTc2LTExLTE4VDE1OjIzOjMwLjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3Ry
aW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0MDAwWicpOworICAgIH0KKwor
ICAgIC8vIHJvdW5kIHRvIG5lYXJlc3QKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxs
ZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0x
MS0xOFQxNToyNFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNv
bmREaWdpdHM6IDMsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0xOFQx
NToyMzozMC4xMjNaJyk7CisgICAgLy8gcm91bmQgdXAKKyAgICBzaG91bGRCZShpMi50b1N0cmlu
Zyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3
Ni0xMS0xOFQxNToyNFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxT
ZWNvbmREaWdpdHM6IDMsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjRaJyk7CisgICAgLy8gcm91bmQgZG93bgorICAgIFsnZmxvb3InLCAndHJ1bmMnXS5m
b3JFYWNoKChyb3VuZGluZ01vZGUpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmco
eyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1
OjIzWicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmRE
aWdpdHM6IDMsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOwor
ICAgIH0pOworCisgICAgeworICAgICAgICAvLyByb3VuZGluZyBkb3duIGlzIHRvd2FyZHMgdGhl
IEJpZyBCYW5nLCBub3QgdG93YXJkcyAxIEJDRQorICAgICAgICBjb25zdCBpNCA9IFRlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnLTAwMDA5OS0xMi0xNVQxMjowMDowMC41WicpOworICAgICAgICBzaG91
bGRCZShpNC50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcsIHJvdW5kaW5nTW9kZTog
J2Zsb29yJyB9KSwgJy0wMDAwOTktMTItMTVUMTI6MDA6MDBaJyk7CisKKyAgICAgICAgLy8gcm91
bmRpbmcgY2FuIGFmZmVjdCBhbGwgdW5pdHMKKyAgICAgICAgY29uc3QgaTUgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OTk5WicpOworICAgICAgICBz
aG91bGRCZShpNS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDgsIHJvdW5kaW5n
TW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMjAwMC0wMS0wMVQwMDowMDowMC4wMDAwMDAwMFonKTsK
KyAgICB9Cit9CisKKy8vIGxlYXAgc2Vjb25kIGlzIGNvbnN0cmFpbmVkCitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzIwMTYtMTItMzFUMjM6NTk6NjBaJyl9YCwgJzIwMTYtMTIt
MzFUMjM6NTk6NTlaJyk7CisvLyB2YXJpYW50IHRpbWUgc2VwYXJhdG9ycworc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4IDE1OjIzWicpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjAwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4dDE1OjIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gdmFyaWFudCBVVEMg
ZGVzaWduYXRvcgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
VDE1OjIzeicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gYW55IG51bWJlciBvZiBk
ZWNpbWFsIHBsYWNlcworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4VDE1OjIzOjMwLjFaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyMzRaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NVonKX1g
LCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTZaJyl9YCwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzNDU2WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NjdaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
NDU2N1onKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQx
NToyMzozMC4xMjM0NTY3OFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3OFonKTsK
K3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjM0NTY3ODlaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5WicpOworLy8gdmFy
aWFudCBkZWNpbWFsIHNlcGFyYXRvcgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTc2LTExLTE4VDE1OjIzOjMwLDEyWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicp
OworLy8gdmFyaWFudCBtaW51cyBzaWduCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJcdTIyMTIwMjowMCcpfWAsICcxOTc2LTExLTE4VDE3
OjIzOjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCdcdTIyMTIw
MDk5OTktMTEtMThUMTU6MjM6MzAuMTJaJyl9YCwgJy0wMDk5OTktMTEtMThUMTU6MjM6MzAuMTJa
Jyk7CisvLyBtaXh0dXJlIG9mIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcx
OTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIz
OjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2
LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYxMTE4VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1MjMzMC4xKzAw
OjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJysw
MDE5NzYtMTEtMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicp
Oworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1OjIz
OjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcx
OTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMw
LjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1
MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTUyMzMwLjErMDAwMCcpfWAsICcx
OTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CisvLyBvcHRpb25hbCBwYXJ0cworc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwKzAwJyl9YCwgJzE5NzYt
MTEtMThUMTU6MjM6MzBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTVaJyl9YCwgJzE5NzYtMTEtMThUMTU6MDA6MDBaJyk7CisvLyBpZ25vcmVzIGFu
eSBzcGVjaWZpZWQgY2FsZW5kYXIKKy8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhcgorLy8gc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4
OVpbdS1jYT1kaXNjb3JkXScpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsK
Ky8vIG5vIGp1bmsgYXQgZW5kIG9mIHN0cmluZworc2hvdWxkVGhyb3coKCkgPT4gVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpqdW5rJyksIFJhbmdl
RXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDBhNjk5ODU4YzZjYzNkZjdjZTM0M2U0ZDFhYmRk
OWJiMjlmZmI1YWIuLjM1MjM0MTI0NjBjMmI3ZmQyYmE1ZjY2Y2E3OWVjNWIyNTYxMDE0MjYgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTIzLDcgKzIzLDggQEAgc2tpcDoKICAgICAtIFNoYWRvd1JlYWxt
CiAgIHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAt
IHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGlt
ZQpAQCAtMzQsNyArMzUsOCBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
VGltZVpvbmUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1pvbmVkRGF0ZVRpbWUKICAg
ICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9pbnRsNDAyL1Rl
bXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3Rv
dHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50
L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3Jh
bC9Ob3cKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3Qv
aW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0yNDQsNiArMjQ2LDcgQEAgc2tpcDoK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b1N0cmlu
Zy9zbWFsbGVzdHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVj
dC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3Rv
dGFsL3VuaXQtcGx1cmFscy1hY2NlcHRlZC5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvc21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0
ZWQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2Nh
bGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
UGxhaW5UaW1lL2Zyb20vY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL2VxdWFscy9jYWxlbmRhci10ZW1w
b3JhbC1vYmplY3QuanMKQEAgLTI2OSw2ICsyNzIsMTMgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9vcmRlci1vZi1vcGVy
YXRpb25zLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5
cGUvdG90YWwvZGF0ZXVudGlsLWZpZWxkLmpzCiAKKyAgICAjIERlcGVuZHMgb24gVGVtcG9yYWwu
VGltZVpvbmUKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBl
L3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpz
CisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmlu
Zy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKKyAgICAt
IHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6
b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLXdyb25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLXN0cmlu
Zy1kYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90
b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUuanMKKwogICAgICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5a
b25lZERhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21w
YXJlL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpz
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZl
dG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50
ZWdlci5qcwpAQCAtMjk2LDYgKzMwNiwxMSBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGlt
ZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5qcwogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZl
dG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2Yt
cmFuZ2UuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlw
ZS90b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3Nl
Y29uZHNmb3Itd3JvbmctdHlwZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5z
dGFudC9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0luc3RhbnQvZnJvbS9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9lcXVhbHMvYXJndW1l
bnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFu
dC9wcm90b3R5cGUvc2luY2UvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvYXJndW1lbnQtem9uZWRk
YXRldGltZS5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBh
cmUvYXJndW1lbnQtem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16
b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2Vy
LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1
bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1v
Zi1yYW5nZS5qcwpAQCAtMzMxLDUgKzM0Niw2IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvcm91bmQvYmFsYW5jZS1uZWdhdGl2ZS1yZXN1
bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9y
b3VuZC9yb3VuZC1uZWdhdGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5q
cworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwv
aW5zdGFudC1zdHJpbmcuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGlt
ZS9wcm90b3R5cGUvc2luY2UvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3VudGlsL2JhbGFuY2Ut
bmVnYXRpdmUtdGltZS11bml0cy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440440</attachid>
            <date>2021-10-06 14:52:38 -0700</date>
            <delta_ts>2021-10-12 17:24:42 -0700</delta_ts>
            <desc>Patch (in progress)</desc>
            <filename>bug-229826-20211006145236.patch</filename>
            <type>text/plain</type>
            <size>126731</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NThkOTViMzJhNjI3ZDc2MDIxYmQ1MjRhMGI2NjA3OGExNzI0MzVhLi5jMjYyYmZmZjdhODIxZjEw
NTkyOWM4ZTYxNmE0Y2YwNzJlZWIwMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBydW50aW1lL0lTTzg2MDEuY3BwOgorICAgICAgICAoSlNDOjpJU084NjAxOjpw
YXJzZUluc3RhbnQpOiBBZGQgYSBwYXJzaW5nIGZ1bmN0aW9uIGZvciBJbnN0YW50IHN0cmluZ3MK
KyAgICAgICAgICByZXVzaW5nIGFzIG11Y2ggYXMgcG9zc2libGUgZnJvbSB0aGUgb3RoZXIgcGFy
c2luZyBmdW5jdGlvbnMuCisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUlT
T1BhcnRzQW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjphZGQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kKToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpkaWZmZXJlbmNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvcltd
KTogQWRkIGFuIG92ZXJsb2FkIGZvciBEdXJhdGlvbltdCisgICAgICAgICAgdGhhdCBpbmRleGVz
IGJ5IFRlbXBvcmFsVW5pdCBlbnVtIGluc3RlYWQgb2YgaW50ZWdlciBpbmRleC4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUgdHlwZSB0
aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2ljIG9wZXJh
dGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9yYWwuWm9u
ZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hT
ZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hNaWxs
aXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1p
Y3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBvY2hTZWNv
bmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9jaE1pbGxp
c2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBvY2hN
aWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmVw
b2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6
Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6OnByaW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpp
c1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpvcGVyYXRv
cjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPD0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yIT0gY29uc3Qp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0gY29uc3QpOgor
ICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAgICAgICAgICBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFjdCBvcCBmcm9t
IHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292ZXJpbmcgVGVt
cG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKTog
VXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQgbWV0
aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNC
aWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBhbiBJbnQxMjgu
CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRpb24gZm9yIG5v
bmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRlTWF0aC5j
cHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
c3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmZyb21EdXJhdGlvbkxpa2UpOiBBY2Nl
c3MgRHVyYXRpb24gcHJvcGVydGllcyBpbgorICAgICAgICAgIHRoZSBvcmRlciBkZWZpbmVkIGlu
IHRoZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0xp
bWl0ZWREdXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp3
aXRoIGNvbnN0KTogQWNjZXNzIER1cmF0aW9uIHByb3BlcnRpZXMgaW4gdGhlCisgICAgICAgICAg
b3JkZXIgZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50
Ojp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0lu
c3RhbnQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRl
bXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsSW5zdGFudDo6Y29tcGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQu
aDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0
cnVjdG9yKTogQWRkZWQuCisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTog
QWRkZWQuCisgICAgICAgIChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAo
SlNDOjpyb3VuZE51bWJlclRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOiBBZGQgYXJyYXkgY29ycmVzcG9uZGlu
ZyB0byB0aGUgdGFibGUgaW4gdGhlCisgICAgICAgICAgc3BlYyB0ZXh0IHNwZWNpZnlpbmcgYWxw
aGFiZXRpY2FsIGFjY2VzcyBvcmRlciBmb3IgdW5pdCBwcm9wZXJ0aWVzLgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0wNiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgZml4IGZv
ciBhIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlWYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGY1ZjBlMDgxZGVmMDQ0MTU2YjZjZmVhZDFjYjY1YzExZjY4ZDUzMTcuLjEy
YjcxZmNkN2YzNjQ5MzAxZTA1YzI0YTRkZjBiNDVmOWE2ZGIzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAg
ICAgICAoV1RGOjp0aW1lVG9NUyk6IE1vdmVkIGZyb20gSlNEYXRlTWF0aC5oLgorICAgICAgICAq
IHd0Zi9JbnQxMjguaDoKKyAgICAgICAgKFdURjo6SW50MTI4SW1wbDo6SW50MTI4SW1wbCk6IEFk
ZCBhIGNvbnZlcnNpb24gZnJvbSBJbnQxMjggdG8gVUludDEyOAorICAgICAgICAgIGFuZCB2aWNl
IHZlcnNhLgorCiAyMDIxLTEwLTA2ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggd2F0Y2hPUywgdHZPUywgYW5kIG1hY0NhdGFseXN0IGJ1aWxkcyBh
ZnRlciByMjgzNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjMyYzMw
ZjExMGY2YTI5ZTJjODE2Zjg3YzU1NmExMmZkYmUwZDZjOC4uY2UyODYzOTQ4NmUwZjA0ZTNhOTdh
MzNkYTQxYjJkZDQ4OTkxYmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTExLDYgKzExMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMjg4
NWI1MTAxN2NjMWFlM2Q4OTJlZjNjNWYyN2E0YjEyMzc1Mzg0Mi4uMjhkNTJkNWI0OWI0ZThkNGZl
ZjMzMzNlMmYzNTAzMTU1MzYzYjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3Myw2ICsxNzMsOCBAQCAk
KFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKICQo
UFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9K
RUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorJChQUk9KRUNU
X0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQy
N2E1OTRmNWMzZS4uMGU4NzE1Nzc2NThiZjAxMTg0NGFjYmQzMDc1NTAzNjcwNWU1YmQxMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtNzAsNiArNzAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLgogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCBlY2JjZTY3Zjc4YzAwMzRjMTY2ZjUwZDU4OTJhNmYwOGM1ZGE0
MGQ2Li4wMTVlNmE0OWQwZTgzNTkxM2I0MWJkMmU1M2NmYzVjZmVhMmIxYTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk1LDYgKzE5NSw4IEBAIE9C
SkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5o
IFwKICAgICBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
Lmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBv
cmFsTm93Lmx1dC5oIFwKICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAgVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDhjMzU1NDUwZDI0ZjY5YThjOTE4ZmJkMzkwNWI0MmJjYjk1MDc5MzguLmUyMTA0NmFlOTMx
ZWE5MGFmMjRkNzBjZGFmNWI4OTE3NzQxZWUxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xOTYwLDYgKzE5NjAsMTEgQEAKIAkJRTNGRjc1MzMxRDlDRUExODAwQzdFMTZEIC8q
IERPTUpJVEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIyMDAx
ODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0EyNkY5MDJFNTAw
NkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovOyB9OworCQlGNkQ2N0Q0MjI2RjkwMkU5MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmggKi87IH07CisJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZENjdENDgyNkY5MTMw
QzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUY2RjE1MDIxMjY5
M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBU
ZW1wb3JhbE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8q
IFNsb3RWaXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTA0MTU1MjI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTA1
RkFGRDFGRTRDRURBMDAwOTMyMzAgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJENkExMTFGQkQ0
OTFEMDAwMjQ1RjQgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CkBAIC01
MzMyLDYgKzUzMzcsMTQgQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJ
CUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8q
IEpTQ0pTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbElu
c3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQTI2RjkwMkU1
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlbXBvcmFsSW5zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQzI2Rjkw
MkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NTI2RjkxMzBB
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE5vdy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxP
YmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxQTI2OTNEMzNF
MDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVtcG9yYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcw
NjUsNiArNzA3OCw4IEBACiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9y
YWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5
NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUY2RDY3RDQ1
MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLywK
KwkJCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
Lmx1dC5oICovLAogCQkJCUY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVj
dC5sdXQuaCAqLywKIAkJCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICov
LAogCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtODAyNCw2ICs4MDM5LDEyIEBACiAJCQkJQTNDN0VE
QjQyNkIwREIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oICovLAog
CQkJCUEzQzdFREI1MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcCAqLywKIAkJCQlBM0M3RURCMDI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5oICovLAorCQkJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnQuY3BwICovLAorCQkJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnQuaCAqLywKKwkJCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3RDNEMjZGOTAyRTcw
MDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovLAorCQkJCUY2RDY3RDNF
MjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLywKIAkJCQlG
NkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1
MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5
M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCkBAIC0xMDc0Niw2ICsxMDc2
NywxMSBAQAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBE
QjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1
MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4
NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXgg
YTg1OTczZTdlZGNlMWI4MzcxMWUwMjkxOTcyYTMxYTQ0NmFmODUxMC4uMzZjNjAxYzBlODAyMTJh
YTkzYjMwMmNmNDMwMzBmOTU5MDE1YjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApA
QCAtMTAxOCw2ICsxMDE4LDkgQEAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNw
cAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCity
dW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUv
VGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5j
cHAKaW5kZXggZTcyYmY3Mjc3YjIyZjM3NjUyOTY0ZWY0NDM2NjEwZTk2MzQzMWQ5Yy4uYmJmMWFj
NGUyNDdlOGE5MTZiYTgzZDc5NjZjZjJkZDRjZThjY2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTg3Nyw2ICs4NzcsMzcgQEAgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9w
dGlvbmFsPFRpbWUKICAgICB9KTsKIH0KIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNl
SW5zdGFudChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGVtcG9yYWxJbnN0YW50U3RyaW5nCisgICAgLy8gVGVtcG9y
YWxJbnN0YW50U3RyaW5nIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lWm9uZU9mZnNldFJlcXVpcmVk
CisgICAgLy8gICAgIERhdGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMgVGltZVpvbmVPZmZz
ZXRSZXF1aXJlZAorCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNw
cm9kLVRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyBUaW1lWm9uZU9mZnNldFJlcXVpcmVk
IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXQgVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0
aW9uX29wdAorCisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtd
KGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4geworICAgICAgICBhdXRv
IGRhdGV0aW1lID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWRhdGV0aW1l
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBbZGF0ZSwg
bWF5YmVUaW1lLCBtYXliZVRpbWVab25lXSA9IGRhdGV0aW1lLnZhbHVlKCk7CisgICAgICAgIGlm
ICghbWF5YmVUaW1lWm9uZSB8fCAoIW1heWJlVGltZVpvbmUtPm1feiAmJiAhbWF5YmVUaW1lWm9u
ZS0+bV9vZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
Ly8gRklYTUU6IHBhcnNlIGNhbGVuZGFyIGFubm90YXRpb24KKyAgICAgICAgaWYgKCFidWZmZXIu
YXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgUGxh
aW5UaW1lIHRpbWU7CisgICAgICAgIGlmIChtYXliZVRpbWUpCisgICAgICAgICAgICB0aW1lID0g
bWF5YmVUaW1lLnZhbHVlKCk7CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBtYXliZVRpbWVa
b25lLT5tX3ogPyAwIDogKm1heWJlVGltZVpvbmUtPm1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
eyBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIoKSwgZGF0ZS5tb250
aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwgdGltZS5zZWNvbmQo
KSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRpbWUubmFub3NlY29u
ZCgpLCBvZmZzZXQpIH07CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWZvcm1hdHRpbWV6b25lb2Zmc2V0c3RyaW5nCiBTdHJp
bmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiB7CkBAIC05Njks
NSArMTAwMCw5MCBAQCBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRp
b24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0V4YWN0VGltZSBFeGFjdFRpbWU6OmZyb21JU09Q
YXJ0c0FuZE9mZnNldChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2lnbmVk
IGgsIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1pY3Jv
cywgdW5zaWduZWQgbnMsIGludDY0X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCh5ID49IC05OTk5
OTkgJiYgeSA8PSA5OTk5OTkpOworICAgIEFTU0VSVChtb24gPj0gMSAmJiBtb24gPD0gMTIpOwor
ICAgIEFTU0VSVChkID49IDEgJiYgZCA8PSAzMSk7CisgICAgQVNTRVJUKGggPj0gMCAmJiBoIDw9
IDIzKTsKKyAgICBBU1NFUlQobWluID49IDAgJiYgbWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA+
PSAwICYmIHMgPD0gNTkpOworICAgIEFTU0VSVChtcyA+PSAwICYmIG1zIDw9IDk5OSk7CisgICAg
QVNTRVJUKG1pY3JvcyA+PSAwICYmIG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA+PSAw
ICYmIG5zIDw9IDk5OSk7CisKKyAgICBkb3VibGUgZGF0ZURheXMgPSBkYXRlVG9EYXlzRnJvbTE5
NzAoeSwgbW9uIC0gMSwgZCk7CisgICAgZG91YmxlIHRpbWVNcyA9IHRpbWVUb01TKGgsIG1pbiwg
cywgbXMpOworICAgIGRvdWJsZSB1dGNNcyA9IGRhdGVEYXlzICogbXNQZXJEYXkgKyB0aW1lTXM7
CisgICAgSW50MTI4IHV0Y05zID0gSW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4odXRjTXMp
IH0gKiAxJzAwMCcwMDAgKyBtaWNyb3MgKiAxMDAwICsgbnM7CisgICAgcmV0dXJuIEV4YWN0VGlt
ZSB7IHV0Y05zIC0gb2Zmc2V0IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBFeGFj
dFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoIWR1cmF0
aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOworICAgIEFTU0VS
VCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlzKCkpOworCisg
ICAgSW50MTI4IHJlc3VsdE5zIHsgbV9lcG9jaE5hbm9zZWNvbmRzIH07CisKKyAgICAvLyBUaGUg
ZHVyYXRpb24ncyBob3VycywgbWludXRlcywgc2Vjb25kcywgYW5kIG1pbGxpc2Vjb25kcyBzaG91
bGQgYmUKKyAgICAvLyBhYmxlIHRvIGJlIGNhc3QgaW50byBhIDY0LWJpdCBpbnQuIDIqMWU4IDI0
LWhvdXIgZGF5cyBpcyB0aGUgbWF4aW11bQorICAgIC8vIHRpbWUgc3BhbiBmb3IgZXhhY3QgdGlt
ZSwgc28gaWYgd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGR1cmF0aW9uIGV4Y2VlZHMKKyAgICAv
LyB0aGF0LCB0aGVuIHdlIGNhbiBiYWlsIG91dC4KKworICAgIGlmIChmYWJzKGR1cmF0aW9uLmhv
dXJzKCkpID4gNDgwMDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBy
ZXN1bHROcyArPSBJbnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5ob3Vycygp
KSB9ICogRXhhY3RUaW1lOjpuc1BlckhvdXI7CisgICAgaWYgKGZhYnMoZHVyYXRpb24ubWludXRl
cygpKSA+IDI4ODAwMDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBy
ZXN1bHROcyArPSBJbnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5taW51dGVz
KCkpIH0gKiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIGlmIChmYWJzKGR1cmF0aW9uLnNl
Y29uZHMoKSkgPiAxLjcyOGUrMTMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmVzdWx0TnMgKz0gSW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24uc2Vjb25k
cygpKSB9ICogRXhhY3RUaW1lOjpuc1BlclNlY29uZDsKKyAgICBpZiAoZmFicyhkdXJhdGlvbi5t
aWxsaXNlY29uZHMoKSkgPiAxLjcyOGUrMTYpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24u
bWlsbGlzZWNvbmRzKCkpIH0gKiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7CisgICAgLy8g
RklYTUU6IHByZWNpc2lvbi4gY2hlY2sgaWYgdGhlcmUgaXMgc3VjaCBhIHRoaW5nIGFzIGNoZWNr
ZWQgaW50ZWdlcgorICAgIC8vIGFyaXRobWV0aWMgaW4gV1RGCisgICAgcmVzdWx0TnMgKz0gSW50
MTI4IHsgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubWljcm9zZWNvbmRzKCkpIH0gKiBF
eGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMgKz0gSW50MTI4IHsgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oZHVyYXRpb24ubmFub3NlY29uZHMoKSkgfTsKKworICAgIEV4YWN0
VGltZSByZXN1bHQgeyByZXN1bHROcyB9OworICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJbnQx
MjggRXhhY3RUaW1lOjpyb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwg
VGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50
MTI4IGluY3JlbWVudE5zIHsgaW5jcmVtZW50IH07CisgICAgc3dpdGNoICh1bml0KSB7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJI
b3VyOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiBpbmNyZW1lbnROcyAq
PSBFeGFjdFRpbWU6Om5zUGVyTWludXRlOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6
U2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kOyBicmVhazsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGlt
ZTo6bnNQZXJNaWxsaXNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jv
c2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7IGJyZWFr
OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5k
TnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOwor
fQorCisvLyBEaWZmZXJlbmNlSW5zdGFudCAoIG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwg
c21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZGlmZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRp
bWU6OmRpZmZlcmVuY2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBv
cmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIElu
dDEyOCBkaWZmID0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRz
OworICAgIHJldHVybiByb3VuZChkaWZmLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7
Cit9CisKK0V4YWN0VGltZSBFeGFjdFRpbWU6OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVt
cG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEV4YWN0VGltZSB7IHJvdW5kKG1fZXBvY2hOYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1
bml0LCByb3VuZGluZ01vZGUpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SVNPODYwMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4
IGRhMzczNDExMzZjYTI1YjM0OWYyNGVhZTc2Zjk1ODI0YjMyZjkxNzEuLmE1MzBkMDI4MTUyNDUz
MDVlMmFmNGNiZWJjNzc5N2U4MzFjNTRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JU084NjAxLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CkBAIC02MSw2ICs2Miw4IEBAIHB1
YmxpYzoKIAogICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRh
W2ldOyB9CiAgICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFbaV07IH0KKyAgICBkb3VibGUmIG9wZXJhdG9yW10oVGVtcG9yYWxVbml0IHUp
IHsgcmV0dXJuIG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90Pih1KV07IH0KKyAgICBjb25zdCBk
b3VibGUmIG9wZXJhdG9yW10oVGVtcG9yYWxVbml0IHUpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVtz
dGF0aWNfY2FzdDx1aW50OF90Pih1KV07IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmZpbGwoMCk7IH0KQEAgLTc3LDYgKzgwLDEyMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8
ZG91YmxlLCBudW1iZXJPZlRlbXBvcmFsVW5pdHM+IG1fZGF0YSB7IH07CiB9OwogCitjbGFzcyBF
eGFjdFRpbWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEV4YWN0VGltZSk7CitwdWJs
aWM6CisgICAgY29uc3RleHByIEV4YWN0VGltZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIg
RXhhY3RUaW1lKGNvbnN0IEV4YWN0VGltZSYpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgZXhw
bGljaXQgRXhhY3RUaW1lKEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKSA6IG1fZXBvY2hOYW5vc2Vj
b25kcyhlcG9jaE5hbm9zZWNvbmRzKSB7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RU
aW1lIGZyb21FcG9jaFNlY29uZHMoaW50NjRfdCBlcG9jaFNlY29uZHMpCisgICAgeworICAgICAg
ICByZXR1cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoU2Vjb25kcyB9ICogRXhhY3RUaW1lOjpu
c1BlclNlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RUaW1lIGZyb21F
cG9jaE1pbGxpc2Vjb25kcyhpbnQ2NF90IGVwb2NoTWlsbGlzZWNvbmRzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaE1pbGxpc2Vjb25kcyB9ICogRXhhY3RU
aW1lOjpuc1Blck1pbGxpc2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFj
dFRpbWUgZnJvbUVwb2NoTWljcm9zZWNvbmRzKGludDY0X3QgZXBvY2hNaWNyb3NlY29uZHMpCisg
ICAgeworICAgICAgICByZXR1cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoTWljcm9zZWNvbmRz
IH0gKiBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgRXhh
Y3RUaW1lIGZyb21JU09QYXJ0c0FuZE9mZnNldChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50
OF90IGQsIHVuc2lnbmVkIGgsIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMs
IHVuc2lnbmVkIG1pY3JvcywgdW5zaWduZWQgbnMsIGludDY0X3Qgb2Zmc2V0KTsKKworICAgIGNv
bnN0ZXhwciBpbnQ2NF90IGVwb2NoU2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBv
Y2hOYW5vc2Vjb25kcyAvIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKyAgICBjb25z
dGV4cHIgaW50NjRfdCBlcG9jaE1pbGxpc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1f
ZXBvY2hOYW5vc2Vjb25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQor
ICAgIGNvbnN0ZXhwciBpbnQ2NF90IGVwb2NoTWljcm9zZWNvbmRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
NjRfdD4obV9lcG9jaE5hbm9zZWNvbmRzIC8gRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsK
KyAgICB9CisgICAgY29uc3RleHByIEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbV9lcG9jaE5h
bm9zZWNvbmRzOworICAgIH0KKworICAgIGNvbnN0ZXhwciBpbnQgbmFub3NlY29uZHNGcmFjdGlv
bigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Vwb2No
TmFub3NlY29uZHMgJSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisKKyAgICBTdHJp
bmcgYXNTdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OworICAgICAgICBpZiAobV9lcG9jaE5hbm9zZWNvbmRzIDwgMCkgeworICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJy0nKTsKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCAtbV9l
cG9jaE5hbm9zZWNvbmRzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhc1N0cmluZ0lt
cGwoYnVpbGRlciwgbV9lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLyBJc1ZhbGlkRXBvY2hOYW5vc2Vjb25kcyAoIGVw
b2NoTmFub3NlY29uZHMgKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3Jh
bC8jc2VjLXRlbXBvcmFsLWlzdmFsaWRlcG9jaG5hbm9zZWNvbmRzCisgICAgY29uc3RleHByIGJv
b2wgaXNWYWxpZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNv
bmRzID49IEV4YWN0VGltZTo6bWluVmFsdWUgJiYgbV9lcG9jaE5hbm9zZWNvbmRzIDw9IEV4YWN0
VGltZTo6bWF4VmFsdWU7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KEV4
YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3Nl
Y29uZHMgPCBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPD0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA8PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAg
fQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA9PSBvdGhlci5tX2Vwb2No
TmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oRXhhY3RU
aW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25k
cyAhPSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPj0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQor
ICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID4gb3RoZXIubV9lcG9jaE5hbm9z
ZWNvbmRzOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBhZGQoRHVyYXRp
b24pIGNvbnN0OworICAgIEludDEyOCBkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwgdW5zaWdu
ZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CisgICAgRXhh
Y3RUaW1lIHJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01v
ZGUpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IGRheVJh
bmdlU2Vjb25kcyB7IDg2NDAwJzAwMDAwMDAwIH07IC8vIDFlOCBkYXlzCisgICAgc3RhdGljIGNv
bnN0ZXhwciBJbnQxMjggbnNQZXJNaWNyb3NlY29uZCB7IDEwMDAgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEludDEyOCBuc1Blck1pbGxpc2Vjb25kIHsgMScwMDAnMDAwIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBJbnQxMjggbnNQZXJTZWNvbmQgeyAxJzAwMCcwMDAnMDAwIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJNaW51dGUgPSBuc1BlclNlY29uZCAqIDYwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVySG91ciA9IG5zUGVyTWludXRlICogNjA7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbWluVmFsdWUgPSAtZGF5UmFuZ2VTZWNvbmRzICog
bnNQZXJTZWNvbmQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbWF4VmFsdWUgPSBkYXlS
YW5nZVNlY29uZHMgKiBuc1BlclNlY29uZDsKKworICAgIHN0YXRpYyB2b2lkIGFzU3RyaW5nSW1w
bChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBJbnQxMjggdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAodmFsdWUgPiA5KQorICAgICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIHZhbHVlIC8g
MTApOworICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUg
JSAxMCkgKyAnMCcpOworICAgIH0KKworICAgIHN0YXRpYyBJbnQxMjggcm91bmQoSW50MTI4IHF1
YW50aXR5LCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKTsK
KworICAgIEludDEyOCBtX2Vwb2NoTmFub3NlY29uZHMgeyB9OworfTsKKwogY2xhc3MgUGxhaW5U
aW1lIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUpOwogcHVibGljOgpA
QCAtMTY2LDUgKzI4NSw3IEBAIFN0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUs
IHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uCiAKIGJvb2wgaXNWYWxp
ZER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJik7CiAKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBw
YXJzZUluc3RhbnQoU3RyaW5nVmlldyk7CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuaAppbmRleCBhNTA5ZDkyZDYzZTk1YmVmMDA2MjBhMzA2YTNhNTVmMDRh
NjU2MzgyLi5jMTdkN2U3NDIxZDE5ZTkwNTRmNTY5M2U3MDhkMWEyZmY1ODRiMGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApA
QCAtOTQsNiArOTQsOCBAQCBwcml2YXRlOgogCiAgICAgVURhdGVJbnRlcnZhbEZvcm1hdCogY3Jl
YXRlRGF0ZUludGVydmFsRm9ybWF0SWZOZWNlc3NhcnkoSlNHbG9iYWxPYmplY3QqKTsKIAorICAg
IHN0YXRpYyBkb3VibGUgaGFuZGxlRGF0ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCiAgICAgZW51bSBjbGFzcyBXZWVrZGF5IDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywg
U2hvcnQsIExvbmcgfTsKICAgICBlbnVtIGNsYXNzIEVyYSA6IHVpbnQ4X3QgeyBOb25lLCBOYXJy
b3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBZZWFyIDogdWludDhfdCB7IE5vbmUs
IFR3b0RpZ2l0LCBOdW1lcmljIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA3NTg0
Y2YwY2ZiMTI5ZWJjZjhhYmY0NTNmM2ViZWFmNGI5NzFjZjNiLi42ZTRkNjI1YzUwMmYyMGM0M2Jm
OWQ2MzhhMmViM2E4MmY4MmMzMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTkwLDYgKzkxLDI3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKKy8vIEhhbmRs
ZURhdGVUaW1lVmFsdWUgKCBkYXRlVGltZUZvcm1hdCwgeCApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1oYW5kbGVkYXRldGltZXZhbHVlCitkb3Vi
bGUgSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgeCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
aWYgKHguaXNVbmRlZmluZWQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBk
YXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworCisgICAgLy8gRklYTUU6Cisg
ICAgLy8gIC0gQWRkIGFsbCBvZiB0aGUgb3RoZXIgVGVtcG9yYWwgdHlwZXMKKyAgICAvLyAgLSBX
b3JrIGluIGVwb2NoIG5hbm9zZWNvbmRzCisgICAgLy8gIC0gUmV0dXJuIFVEYXRlRm9ybWF0IGFu
ZCBVRGF0ZUludGVydmFsRm9ybWF0IGRlcGVuZGluZyBvbiB0aGUgdHlwZQorICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIHgp
OworICAgIGlmIChpbnN0YW50KQorICAgICAgICByZXR1cm4gaW5zdGFudC0+ZXhhY3RUaW1lKCku
ZXBvY2hNaWxsaXNlY29uZHMoKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgV1RG
Ojp0aW1lQ2xpcCh4LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpKTsKK30KKwogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMDAsMTQgKzEyMiw4IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChK
U0dsb2JhbE9iamVjdCoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIEpTVmFs
dWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0g
ICAgaWYgKGRhdGUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgp
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RG
Ojp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91Ymxl
IHZhbHVlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9i
amVjdCwgZGF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0
KGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CkBAIC0xNTYsMTQgKzE3Miw4IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9Q
YXJ0cywgKEpTR2xvYmFsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1h
dCJfcykpOwogCiAgICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAg
ICBkb3VibGUgdmFsdWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2
YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBlbHNlIHsK
LSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIH0KKyAgICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURh
dGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkp
KTsKIH0KQEAgLTE4NSw5ICsxOTUsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYgogICAgIGlm
IChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5l
ZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9zKTsKIAotICAgIGRvdWJsZSBz
dGFydERhdGUgPSBzdGFydERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRv
dWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKLSAgICBkb3VibGUgZW5kRGF0ZSA9IGVuZERhdGVWYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0Ojpo
YW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRl
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhhbiBlbmREYXRlIl9zKTsKQEAgLTIxMiw5ICsyMjIsOSBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVu
Y0Zvcm1hdFJhbmdlVG9QYXJ0cywgKEpTRwogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVm
aW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUg
aXMgdW5kZWZpbmVkIl9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBzdGFydERhdGVWYWx1
ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVW
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBkb3VibGUg
ZW5kRGF0ZSA9IGVuZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJs
ZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2Jh
bE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhh
biBlbmREYXRlIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cAppbmRleCAxNzRiMGY4YWU3ZmVkYmIzMjQzZjQ0YWVkZTU0MzBjYmYyZjI0MWIyLi40YjU5NmMy
N2E2YjM0YTIxYjk5NDk3YzE0NzlmY2Y3NjhkNTA4MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvSGFz
aGVyLmg+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjMxLDYgKzIzMiw2MiBAQCBKU0JpZ0ludCogSlNC
aWdJbnQ6OmNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRfdCB2
YWx1ZSkKICAgICByZXR1cm4gY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZFZh
bHVlLCBzaWduKTsKIH0KIAorSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDEyOCB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBj
cmVhdGVaZXJvKGdsb2JhbE9iamVjdCkpOworCisgICAgVUludDEyOCB1bnNpZ25lZFZhbHVlOwor
ICAgIGJvb2wgc2lnbiA9IGZhbHNlOworICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgdW5z
aWduZWRWYWx1ZSA9IHN0YXRpY19jYXN0PFVJbnQxMjg+KC0odmFsdWUgKyAxKSkgKyAxOworICAg
ICAgICBzaWduID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9IHZh
bHVlOworCisgICAgaWYgKHVuc2lnbmVkVmFsdWUgPD0gVUlOVDY0X01BWCkKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlKSwgc2lnbikpOworCisgICAgaWYgY29uc3Rl
eHByIChzaXplb2YoRGlnaXQpID09IDgpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNy
ZWF0ZVdpdGhMZW5ndGgoZ2xvYmFsT2JqZWN0LCAyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyA9IHN0YXRpY19j
YXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSkpOworICAgICAg
ICBEaWdpdCBoaWdoQml0cyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRf
dD4odW5zaWduZWRWYWx1ZSA+PiA2NCkpOworCisgICAgICAgIEFTU0VSVChoaWdoQml0cyk7CisK
KyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgwLCBsb3dCaXRzKTsKKyAgICAgICAgYmlnSW50LT5z
ZXREaWdpdCgxLCBoaWdoQml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAg
ICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9
PSA0KTsKKworICAgIERpZ2l0IGRpZ2l0MCA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2Fz
dDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSkpOworICAgIERpZ2l0IGRpZ2l0MSA9IHN0YXRpY19j
YXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiAzMikpOwor
ICAgIERpZ2l0IGRpZ2l0MiA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRf
dD4odW5zaWduZWRWYWx1ZSA+PiA2NCkpOworICAgIERpZ2l0IGRpZ2l0MyA9IHN0YXRpY19jYXN0
PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiA5NikpOworCisg
ICAgQVNTRVJUKGRpZ2l0MiB8fCBkaWdpdDMpOworCisgICAgaW50IGxlbmd0aCA9IGRpZ2l0MyA/
IDQgOiAzOworICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9i
amVjdCwgbGVuZ3RoKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KworICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgZGlnaXQwKTsKKyAgICBiaWdJbnQtPnNldERpZ2l0
KDEsIGRpZ2l0MSk7CisgICAgYmlnSW50LT5zZXREaWdpdCgyLCBkaWdpdDIpOworICAgIGlmIChk
aWdpdDMpCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMywgZGlnaXQzKTsKKyAgICBiaWdJbnQt
PnNldFNpZ24oc2lnbik7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwogSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgdmFsdWUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVk
Y2IzMzRkZmQ3OC4uODhmM2MzOTAzOTkxMjJlMjM3YWUyYTE4NjExNjMzYjZkYTY3OTRjYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL0NhZ2VkVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03NCw2ICs3NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3Qq
LCB1aW50MzJfdCB2YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCB2YWx1ZSk7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0Kiwg
dWludDY0X3QgdmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIEludDEyOCB2YWx1ZSk7CiAgICAgc3RhdGljIEpT
QmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCB2YWx1ZSk7CiAgICAgc3Rh
dGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKTsK
IApAQCAtNjA1LDggKzYwNyw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdWludDY0X3QgdG9CaWdVSW50NjRIZWFwKEpTQmlnSW50Kik7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VaW50NjRIZWFwKEpT
QmlnSW50Kik7Ci0KICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZzZXRPZkRhdGEoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JpZ0ludCwgbV9kYXRhKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZGFlOWIz
YTliYzkyZmJhZmQ0ZTMwMTk0YjRkMWE4ZDgzZGJkMmNmZi4uNTIxOWY4ZjcyNDJiODZmOTQwZTgy
ODIzNTg0ZTYxZmUyYmE0OWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRlTWF0aC5jcHAKQEAgLTI2OSwxMSArMjY5LDYgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVD
YWNoZTo6bG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gsIFdURjo6
VGkKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9N
Uyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQotewotICAg
IHJldHVybiAoKChob3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29u
ZHNQZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKLX0KLQogZG91Ymxl
IERhdGVDYWNoZTo6Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1l
JiB0LCBkb3VibGUgbWlsbGlzZWNvbmRzLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7
CiAgICAgZG91YmxlIGRheSA9IGRhdGVUb0RheXNGcm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgp
LCB0Lm1vbnRoRGF5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDI5N2ZjZDY5OGZmYmE5NGI3NzI2ZGU2N2QxOWIyNDI1OTcw
M2EzMmIuLjMxYTdiNjY4MjFkY2I1NGNjY2YwNGEyZDFjYTI1OWJlZjZkOWUwZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIw
NSw2ICsyMDUsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5oIgpAQCAtMTIzNyw2ICsxMjM5LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAg
ICAgIH0pOwogCisgICAgICAgIG1faW5zdGFudFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAg
ICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUqIGluc3RhbnRQcm90b3R5cGUgPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAg
ICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBnbG9iYWxPYmplY3QsIGluc3RhbnRQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOwor
CiAgICAgICAgIG1fcGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7
CkBAIC0yMTMxLDYgKzIxNDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
SW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5t
X2NhbGVuZGFyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVy
YXRpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbnN0YW50
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDk2MWMyNDdlOWE3OTJhMWFmZTZjOWM5ODk0MDc2ZjE0Zjcw
ODJkZWEuLjMyMTRiOGFjZjdkZWVlYmZhZGMwYTBiZWE1ZWQyNTEzZWY5YWRiNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI5LDYg
KzMyOSw3IEBAIHB1YmxpYzoKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2luc3RhbnRTdHJ1Y3R1cmU7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3Ry
dWN0dXJlOwogCkBAIC04ODAsNiArODgxLDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBj
YWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CiAgICAgU3RydWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRp
b25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJl
KCkgeyByZXR1cm4gbV9pbnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogcGxhaW5UaW1lU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
dGltZVpvbmVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggZmI2MDc0Y2I4NTg0Zjlj
YzgwYWFiN2UyYjQxMWFmNjBkMmIxZjBkNi4uZWQ5ZjhmNTExNDEyMTBmMGJjMDY5YjVjZTNhOTgx
YjAxMWVlYmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTg4LDIwICs4OSwyMCBAQCBJU084NjAxOjpEdXJhdGlvbiBU
ZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVyYXRpb25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogCiAgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0OwogICAgIGF1dG8gaGFzUmVsZXZh
bnRQcm9wZXJ0eSA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZU
ZW1wb3JhbFVuaXRzOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlr
ZS0+Z2V0KGdsb2JhbE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCBzdGF0aWNf
Y2FzdDxUZW1wb3JhbFVuaXQ+KGkpKSk7CisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IHRl
bXBvcmFsVW5pdHNJblRhYmxlT3JkZXIpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0
aW9uTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdGVtcG9yYWxVbml0UHJvcGVydHlOYW1lKHZtLCB1
bml0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAg
ICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdFtpXSA9IDA7
CisgICAgICAgICAgICByZXN1bHRbdW5pdF0gPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAogICAgICAgICBoYXNSZWxldmFudFByb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAg
cmVzdWx0W2ldID0gdmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmVzdWx0
W3VuaXRdID0gdmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgICAgICBpZiAoIWlzSW50ZWdlcihyZXN1bHRb
aV0pKSB7CisgICAgICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0XSkpIHsKICAgICAgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zKTsKICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgIH0KQEAgLTE2NCw2ICsxNjUsMzEgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVt
cG9yYWxEdXJhdGlvbjo6dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKKy8vIFRvTGltaXRl
ZFRlbXBvcmFsRHVyYXRpb24gKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgZGlzYWxsb3dlZEZpZWxk
cyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10
b2xpbWl0ZWR0ZW1wb3JhbGR1cmF0aW9uCitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0
aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGl0ZW1WYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxs
b3dlZFVuaXRzKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlv
biBkdXJhdGlvbiA9IHRvSVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFpc1ZhbGlk
RHVyYXRpb24oZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBh
bmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisK
KyAgICBmb3IgKFRlbXBvcmFsVW5pdCB1bml0IDogZGlzYWxsb3dlZFVuaXRzKSB7CisgICAgICAg
IGlmIChkdXJhdGlvblt1bml0XSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIkFkZGluZyAiX3MsIHRlbXBvcmFsVW5pdFByb3Bl
cnR5TmFtZSh2bSwgdW5pdCkucHVibGljTmFtZSgpLCAicyBub3Qgc3VwcG9ydGVkIGJ5IFRlbXBv
cmFsLkluc3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3MpKTsKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZHVy
YXRpb247Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZyb20oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMjMwLDIwICsyNTYsMjAgQEAgSVNPODYwMTo6
RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCoKIAogICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdDsKICAgICBhdXRv
IGhhc1JlbGV2YW50UHJvcGVydHkgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mVGVtcG9yYWxVbml0czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBk
dXJhdGlvbkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5TmFtZSh2
bSwgc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpKSkpOworICAgIGZvciAoVGVtcG9yYWxVbml0
IHVuaXQgOiB0ZW1wb3JhbFVuaXRzSW5UYWJsZU9yZGVyKSB7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBkdXJhdGlvbkxpa2UtPmdldChnbG9iYWxPYmplY3QsIHRlbXBvcmFsVW5pdFByb3BlcnR5
TmFtZSh2bSwgdW5pdCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICByZXN1
bHRbaV0gPSBtX2R1cmF0aW9uW2ldOworICAgICAgICAgICAgcmVzdWx0W3VuaXRdID0gbV9kdXJh
dGlvblt1bml0XTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aGFzUmVsZXZhbnRQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdFtpXSA9IHZhbHVlLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJlc3VsdFt1bml0XSA9IHZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKLSAgICAgICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W2ldKSkgeworICAgICAgICBpZiAo
IWlzSW50ZWdlcihyZXN1bHRbdW5pdF0pKSB7CiAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBi
ZSBpbnRlZ2VycyJfcyk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXgg
ODJmMmQ1ZDY1YzIyYWM0YzQwN2M4NjM0MzQyZmY2NjljYTBhMTg5Ni4uZDI3NzIwOWNkZGQ3NzVi
MTE1ZDE3ZDFlMWNlZmMxNDI3N2Q0ODA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIHRvVGVtcG9y
YWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBJU084NjAx
OjpEdXJhdGlvbiB0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cyk7CiAgICAg
c3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
ICAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNTFmMjA4OWI0ZjNhOGM1ZmRhOWQ1MmRhMmYxZWYzM2Q4
OTY5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnQuY3BwCkBAIC0wLDAgKzEsNDI4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAi
SVNPODYwMS5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk1hdGhDb21t
b24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50OjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRl
bXBvcmFsSW5zdGFudCkgfTsKKworU3RydWN0dXJlKiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKK30KKworVGVtcG9yYWxJbnN0YW50OjpUZW1wb3JhbEluc3RhbnQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhhY3RUaW1lKGV4YWN0VGltZSkKK3sKK30KKworVGVt
cG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lKQoreworICAgIEFTU0VSVChl
eGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnQ+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnQodm0s
IHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCisvLyBDcmVhdGVUZW1wb3JhbEluc3RhbnQgKCBlcG9j
aE5hbm9zZWNvbmRzIFsgLCBuZXdUYXJnZXQgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFs
SW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIWV4YWN0VGltZS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoZXhhY3RUaW1lLmFzU3RyaW5nKCksICIgZXBvY2ggbmFub3NlY29uZHMgaXMg
b3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3Ry
dWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4
YWN0VGltZSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVh
dGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVl
IGVwb2NoTmFub3NlY29uZHMgPSB2YWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0g
YXNIZWFwQmlnSW50KGVwb2NoTmFub3NlY29uZHMpOworI2lmIFVTRShCSUdJTlQzMikKKyAgICBJ
bnQxMjggZDAgeyBiaWdpbnQtPmxlbmd0aCgpID4gMCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwIH07
CisgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEp
IDogMCB9OworICAgIEludDEyOCBkMiB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAyID8gYmlnaW50LT5k
aWdpdCgyKSA6IDAgfTsKKyAgICBJbnQxMjggdG90YWwgeyBkMiA8PCA2NCB8IGQxIDw8IDMyIHwg
ZDAgfTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBiaWdpbnQtPmxlbmd0aCgpID4gMzsKKyNl
bHNlCisgICAgSW50MTI4IGxvdyB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdp
dCgwKSA6IDAgfTsKKyAgICBJbnQxMjggaGlnaCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmln
aW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICBJbnQxMjggdG90YWwgeyBoaWdoIDw8IDY0IHwgbG93
IH07CisgICAgYm9vbCBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisjZW5k
aWYKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsgdG90YWwgKiAoYmlnaW50LT5z
aWduKCkgPyAtMSA6IDEpIH07CisKKyAgICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1l
LmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgMTApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0
cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQo
MTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiB0aGUg
c3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0
cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOwor
fQorCisvLyBUb1RlbXBvcmFsSW5zdGFudCAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFs
SW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0YW50Pih2bSkpCisgICAgICAgIHJl
dHVybiBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRlbVZhbHVlKTsKKworICAgIC8vIEZJWE1F
OiB3aGVuIFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUgbGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVl
LmluaGVyaXRzPFRlbXBvcmFsWm9uZWREYXRlVGltZT4odm0pKQorICAgIC8vICAgIHJldHVybiBU
ZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJl
KCksIGpzQ2FzdDxUZW1wb3JhbFpvbmVkRGF0ZVRpbWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUo
KSk7CisKKyAgICBTdHJpbmcgc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBh
dXRvIHBhcnNlZEV4YWN0VGltZSA9IElTTzg2MDE6OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAg
IGlmICghcGFyc2VkRXhhY3RUaW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCInIl9zLCBlbGxpcHNpemVBdCgxMDAsIHN0cmluZyks
ICInIGlzIG5vdCBhIHZhbGlkIFRlbXBvcmFsLkluc3RhbnQgc3RyaW5nIl9zKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIHBhcnNlZEV4YWN0VGltZS52YWx1ZSgpKSk7
Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tCitUZW1wb3Jh
bEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKSB7
CisgICAgICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4oaXRlbVZhbHVlKS0+ZXhhY3RUaW1lKCk7CisgICAgICAgIHJldHVybiBUZW1wb3Jh
bEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4
YWN0VGltZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0
ZW1WYWx1ZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVw
b2NoU2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10
ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9y
YWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgZXBvY2hTZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGRvdWJsZSBlcG9jaFNlY29uZHMgPSBlcG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAg
Ly8gTnVtYmVyVG9CaWdJbnQgc3RlcCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRz
KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0
cmluZyhlcG9jaFNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBv
Y2ggc2Vjb25kcyJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJ
U084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hTZWNvbmRzKGVwb2NoU2Vjb25kcyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0
cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFu
dC5mcm9tZXBvY2htaWxsaXNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50
Ojpmcm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBkb3VibGUgZXBvY2hNaWxsaXNlY29uZHMgPSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihl
cG9jaE1pbGxpc2Vjb25kcykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIG1ha2VTdHJpbmcoZXBvY2hNaWxsaXNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQg
aW50ZWdlciBudW1iZXIgb2YgZXBvY2ggbWlsbGlzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJ
U084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhlcG9jaE1pbGxpc2Vjb25k
cyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2Jh
bE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2No
TWljcm9zZWNvbmRzICggZXBvY2hNaWNyb3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWNyb3NlY29u
ZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29u
ZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pY3Jvc2Vjb25k
c1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTWljcm9z
ZWNvbmRzID0gZXBvY2hNaWNyb3NlY29uZHNWYWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgSlNCaWdJbnQq
IGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE1pY3Jvc2Vjb25kcyk7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIGJvb2wgYmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworI2Vs
c2UKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBiaWdpbnQtPmxlbmd0aCgpID4gMTsKKyNlbmRp
ZgorICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6
OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0JpZ0ludDo6dG9CaWdVSW50NjQoYmlnaW50KSk7CisK
KyAgICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAg
ICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTAp
OworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNs
ZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVt
YmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIg
ZXBvY2ggbWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1w
b3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFj
dFRpbWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzICgg
ZXBvY2hOYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG5hbm9zZWNvbmRzCitUZW1wb3JhbEluc3Rh
bnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzVmFsdWUpCit7CisgICAgcmV0
dXJuIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBlcG9jaE5hbm9zZWNvbmRzVmFsdWUp
OworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUgKCBvbmUsIHR3byApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmNvbXBh
cmUKK0pTVmFsdWUgVGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgb25lVmFsdWUsIEpTVmFsdWUgdHdvVmFsdWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb25lID0gdG9JbnN0YW50KGdsb2Jh
bE9iamVjdCwgb25lVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIHR3byA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIHR3
b1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYg
KG9uZS0+ZXhhY3RUaW1lKCkgPiB0d28tPmV4YWN0VGltZSgpKQorICAgICAgICByZXR1cm4ganNO
dW1iZXIoMSk7CisgICAgaWYgKG9uZS0+ZXhhY3RUaW1lKCkgPCB0d28tPmV4YWN0VGltZSgpKQor
ICAgICAgICByZXR1cm4ganNOdW1iZXIoLTEpOworICAgIHJldHVybiBqc051bWJlcigwKTsKK30K
KworSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFsSW5zdGFudCogb3RoZXIsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFs
bGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBz
bWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQp
OworCisgICAgVGVtcG9yYWxVbml0IGRlZmF1bHRMYXJnZXN0VW5pdCA9IHN0ZDo6bWluKHNtYWxs
ZXN0VW5pdCwgVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBv
cmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0sIGRlZmF1bHRMYXJnZXN0
VW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3Jh
bFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRMYXJnZXN0VW5pdCk7
CisKKyAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8IGxhcmdlc3QpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVu
aXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJv
dW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbWF4SW5jcmVtZW50ID0gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0
VW5pdCk7CisgICAgQVNTRVJUKG1heEluY3JlbWVudCAmJiAqbWF4SW5jcmVtZW50IDw9IDEwMDAp
OyAvLyB1bmJvdW5kZWQgaW5jcmVtZW50cyBhcmUgaW1wb3NzaWJsZSB3aXRoIFRlbXBvcmFsLklu
c3RhbnQKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4SW5jcmVtZW50LCBmYWxzZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludDEyOCByb3VuZGVkRGlmZiA9IGV4
YWN0VGltZSgpLmRpZmZlcmVuY2Uob3RoZXItPmV4YWN0VGltZSgpLCBpbmNyZW1lbnQsIHNtYWxs
ZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICAvLyBOT1RFOiBEdXJhdGlvbiBmaWVsZHMgYXJl
IGN1cnJlbnRseSBkb3VibGVzLCBhbmQgdGhlIHRvdGFsIG51bWJlciBvZgorICAgIC8vIG5hbm9z
ZWNvbmRzIG1heSBub3QgZml0IGluIGEgZG91YmxlLiBUaGlzIG1heSBuZWVkIHRvIGNoYW5nZSBp
ZiB0aGUKKyAgICAvLyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBEdXJhdGlvbiBjaGFuZ2Vz
LgorICAgIEFTU0VSVChyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcwMDAgPCBJTlQ2NF9NQVgpOwor
ICAgIGRvdWJsZSBzZWNvbmRzIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2
NF90Pihyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcwMDApKSB9OworICAgIGRvdWJsZSBuYW5vc2Vj
b25kc1JlbWFpbmRlciB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cm91bmRlZERpZmYgJSAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiBy
ZXN1bHQgeyAwLCAwLCAwLCAwLCAwLCAwLCBzZWNvbmRzLCAwLCAwLCBuYW5vc2Vjb25kc1JlbWFp
bmRlciB9OworCisgICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RV
bml0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgZG91YmxlIG1heGltdW1JbmNy
ZW1lbnQoVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCkKK3sKKyAgICBzd2l0Y2ggKHNtYWxsZXN0
VW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiByZXR1cm4gMjQ7CisgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogcmV0dXJuIDE0NDA7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6OlNlY29uZDogcmV0dXJuIDg2NDAwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNl
Y29uZDogcmV0dXJuIDguNjRlNzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6
IHJldHVybiA4LjY0ZTEwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiByZXR1
cm4gOC42NGUxMzsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6WWVhcjoKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TW9udGg6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OldlZWs6CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6OkRheToKKyAgICBkZWZhdWx0OgorICAgICAgICB7IH0KKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworSVNPODYwMTo6RXhhY3RUaW1lIFRl
bXBvcmFsSW5zdGFudDo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2Jq
ZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
VmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7
IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpX
ZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0
IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlbXBvcmFsVW5p
dCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNv
bmQpOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdN
b2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgZG91YmxlIGluY3JlbWVu
dCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhp
bXVtSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIHRydWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gZXhhY3RUaW1lKCkucm91bmQoaW5jcmVtZW50
LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLnRvU3RyaW5nKCBbIG9wdGlvbnMgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LnByb3RvdHlwZS50b3N0cmluZwor
U3RyaW5nIFRlbXBvcmFsSW5zdGFudDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiB0b1N0cmluZygpOworCisgICAg
SlNPYmplY3QqIHRpbWVab25lID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHRpbWVab25lVmFsdWUg
PSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9uZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIXRpbWVab25l
VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aW1lWm9uZSA9IFRlbXBvcmFsVGltZVpv
bmU6OmZyb20oZ2xvYmFsT2JqZWN0LCB0aW1lWm9uZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICBQcmVjaXNpb25EYXRhIGRhdGEg
PSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGlu
Z01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5k
aW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhw
bGljaXQgZGVmYXVsdHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQ
cmVjaXNpb246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCisg
ICAgICAgIHJldHVybiB0b1N0cmluZyh0aW1lWm9uZSk7CisKKyAgICBJU084NjAxOjpFeGFjdFRp
bWUgbmV3RXhhY3RUaW1lIHsgZXhhY3RUaW1lKCkucm91bmQoZGF0YS5pbmNyZW1lbnQsIGRhdGEu
dW5pdCwgcm91bmRpbmdNb2RlKSB9OworCisgICAgLy8gRklYTUU6IE1pc3NpbmcsIHJlbGllcyBv
biBUaW1lWm9uZToKKyAgICAvLyAxLiBMZXQgcm91bmRlZEluc3RhbnQgYmUgISBDcmVhdGVUZW1w
b3JhbEluc3RhbnQocm91bmRlZE5zKS4KKyAgICAvLyAuLi4KKyAgICAvLyAxLiBJZiBfb3V0cHV0
VGltZVpvbmVfIGlzICp1bmRlZmluZWQqLCB0aGVuCisgICAgLy8gICAxLiBTZXQgX291dHB1dFRp
bWVab25lXyB0byAhIENyZWF0ZVRlbXBvcmFsVGltZVpvbmUoKiJVVEMiKikuCisgICAgLy8gMS4g
TGV0IF9pc29DYWxlbmRhcl8gYmUgISBHZXRJU084NjAxQ2FsZW5kYXIoKS4KKyAgICAvLyAxLiBM
ZXQgX2RhdGVUaW1lXyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldFBsYWluRGF0ZVRpbWVGb3IoX291
dHB1dFRpbWVab25lXywgX2luc3RhbnRfLCBfaXNvQ2FsZW5kYXJfKS4KKyAgICBKU09iamVjdCog
b3V0cHV0VGltZVpvbmUgPSB0aW1lWm9uZTsKKyAgICBpZiAob3V0cHV0VGltZVpvbmUpIHsKKyAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGSVhNRTogVGVtcG9yYWwu
SW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50ZWQgeWV0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9TdHJpbmcobmV3RXhhY3RU
aW1lLCB0aW1lWm9uZSwgZGF0YSk7Cit9CisKKy8vIFRlbXBvcmFsSW5zdGFudFRvU3RyaW5nICgg
aW5zdGFudCwgdGltZVpvbmUsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10ZW1wb3JhbGluc3RhbnR0b3N0cmluZworU3RyaW5n
IFRlbXBvcmFsSW5zdGFudDo6dG9TdHJpbmcoSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSwg
SlNPYmplY3QqIHRpbWVab25lLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBHcmVn
b3JpYW5EYXRlVGltZSBncmVnb3JpYW5EYXRlVGltZSB7IHN0YXRpY19jYXN0PGRvdWJsZT4oZXhh
Y3RUaW1lLmVwb2NoTWlsbGlzZWNvbmRzKCkpLCBMb2NhbFRpbWVPZmZzZXQgeyB9IH07CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgLy8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0
aGUgYm91bmRzIG9mIDEwMDAgYW5kIDk5OTkgaW5jbHVzaXZlIHdlIHdhbnQgdG8KKyAgICAvLyB1
c2UgdGhlIGV4dGVuZGVkIHllYXIgZm9ybWF0IChQYWRJU09ZZWFyKS4KKyAgICB1bnNpZ25lZCB5
ZWFyTGVuZ3RoID0gNDsKKyAgICBpZiAoZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpID4gOTk5OSB8
fCBncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPCAxMDAwKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA8IDAgPyAnLScgOiAnKycpOworICAgICAgICB5
ZWFyTGVuZ3RoID0gNjsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHBh
ZCgnMCcsIHllYXJMZW5ndGgsIHN0ZDo6YWJzKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSkpLAor
ICAgICAgICAnLScsIHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoKCkgKyAxKSwK
KyAgICAgICAgJy0nLCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5tb250aERheSgpKSwK
KyAgICAgICAgJ1QnLCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5ob3VyKCkpLAorICAg
ICAgICAnOicsIHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLm1pbnV0ZSgpKSkpOworCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbnNQZXJTZWNvbmQgeyAxJzAwMCcwMDAnMDAwIH07Cisg
ICAgaW50IGZyYWN0aW9uIHsgZXhhY3RUaW1lLm5hbm9zZWNvbmRzRnJhY3Rpb24oKSB9OworICAg
IGlmIChmcmFjdGlvbiA8IDApCisgICAgICAgIGZyYWN0aW9uICs9IG5zUGVyU2Vjb25kOworCisg
ICAgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoYnVpbGRlciwgZ3JlZ29yaWFuRGF0ZVRpbWUuc2Vj
b25kKCksIGZyYWN0aW9uLCBwcmVjaXNpb24pOworCisgICAgaWYgKHRpbWVab25lKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgICAgIC8vICAg
MS4gTGV0IF90aW1lWm9uZVN0cmluZ18gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRPZmZzZXRTdHJp
bmdGb3IoX3RpbWVab25lXywgX2luc3RhbnRfKS4KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1on
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKKworICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZGRmYTJmOThmMDkzN2M3ZWZhM2FkNDA1NmMzOWJhMTI2YTM5YWQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgKQEAgLTAs
MCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2Jq
ZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1v
ZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICByZXR1cm4gdm0udGVtcG9yYWxJbnN0YW50U3BhY2U8bW9kZT4oKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084
NjAxOjpFeGFjdFRpbWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlm
VmFsaWQoSlNHbG9iYWxPYmplY3QqLCBJU084NjAxOjpFeGFjdFRpbWUsIFN0cnVjdHVyZSogPSBu
dWxscHRyKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgU3RydWN0dXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0
b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJ
bnN0YW50KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBv
cmFsSW5zdGFudCogZnJvbUVwb2NoU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwor
ICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9j
aE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1w
b3JhbEluc3RhbnQqIGZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUs
IEpTVmFsdWUpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhhY3RUaW1lLmdldCgpOyB9CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkaWZm
ZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiwgVGVtcG9yYWxJbnN0YW50KiwgSlNWYWx1ZSBvcHRpb25z
KSBjb25zdDsKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgcm91bmQoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKEpTT2JqZWN0
KiB0aW1lWm9uZSA9IG51bGxwdHIsIFByZWNpc2lvbkRhdGEgcHJlY2lzaW9uID0geyB7IFByZWNp
c2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfSkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b1N0cmluZyhleGFjdFRpbWUoKSwgdGltZVpvbmUsIHByZWNp
c2lvbik7CisgICAgfQorCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudChWTSYsIFN0cnVj
dHVyZSosIElTTzg2MDE6OkV4YWN0VGltZSk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4g
cGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHN0YXRpYyBJ
U084NjAxOjpFeGFjdFRpbWUgZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7
CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKElTTzg2MDE6OkV4YWN0VGltZSwgSlNPYmpl
Y3QqIHRpbWVab25lLCBQcmVjaXNpb25EYXRhKTsKKworICAgIFBhY2tlZDxJU084NjAxOjpFeGFj
dFRpbWU+IG1fZXhhY3RUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFhNDI4MGExY2U2NzA5MGE2NzgxM2MyMTg2NWIyYzVl
M2VlYjY1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCIKKworI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNG
cm9tRXBvY2hNaWxsaXNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
RnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUpOworCit9CisKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQu
aAorQGJlZ2luIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUKKyAgZnJvbSAgICAgICAg
ICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoU2Vjb25kcyAgICAgICB0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTWlsbGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
ZnJvbUVwb2NoTWljcm9zZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9t
RXBvY2hNaWNyb3NlY29uZHMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTmFub3Nl
Y29uZHMgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25k
cyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICAgICAgICB0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKK0BlbmQKKyovCisKK1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKK3sKKyAgICBhdXRv
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iodm0sIHN0
cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBpbnN0YW50UHJv
dG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVy
bmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbEluc3RhbnQpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50KTsKKworVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxU
ZW1wb3JhbEluc3RhbnQsIGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCkKK3sKK30KKwordm9pZCBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDEsICJJbnN0YW50Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91
dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGluc3RhbnRQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBpbnN0YW50UHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRo
aXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0
KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlND
X0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgaW5zdGFudFN0cnVjdHVyZSwgbmV3VGFyZ2V0LCBj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTWlzc2luZyByZXF1
aXJlZCBlcG9jaE5hbm9zZWNvbmRzIGFyZ3VtZW50IHRvIFRlbXBvcmFsLkluc3RhbnQiX3MpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJ
bnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSwgc3RydWN0dXJlKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY2FsbFRlbXBvcmFsSW5zdGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkluc3RhbnQiKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoU2Vjb25kcyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pbGxpc2Vjb25kcywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWls
bGlzZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bUVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJ
bnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTmFub3NlY29uZHMoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0OTg3ZDlkZTMy
MDFiMmM4M2FmM2RlZGUyYTIxODk1YThmMmY2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU7CisKK2NsYXNz
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6
CisgICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKik7Cit9Owor
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxYmRkZmJmMmYxZmJiMmQ5MjYyMzgwYWIyNWVkN2Y2MTU1
ZjJkODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMzI1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIklT
Tzg2MDEuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jQWRkKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVW50aWwpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNSb3VuZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb1N0cmluZyk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9KU09OKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZik7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
R2V0dGVyRXBvY2hOYW5vc2Vjb25kcyk7CisKK30KKworI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLkluc3RhbnQiLCAm
QmFzZTo6c19pbmZvLCAmaW5zdGFudFByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBpbnN0YW50UHJvdG90eXBlVGFi
bGUKKyAgYWRkICAgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNBZGQg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAg
ICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3QgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICB1bnRpbCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1VudGlsICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc2luY2Ug
ICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJvdW5kICAgICAgICAgICAgICB0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jUm91bmQgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBlcXVhbHMgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFs
cyAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdG9TdHJpbmcgICAgICAgICAg
IHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb1N0cmluZyAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVGdW5jVG9KU09OICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xvY2Fs
ZVN0cmluZyAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdmFsdWVPZiAgICAgICAgICAgIHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAw
CisgIGVwb2NoU2Vjb25kcyAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9j
aFNlY29uZHMgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hN
aWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNv
bmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE1pY3Jvc2Vjb25k
cyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMgIERvbnRF
bnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTmFub3NlY29uZHMgICB0ZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzICAgRG9udEVudW18UmVhZE9u
bHl8Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZSog
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmV0dXJuIHByb3RvdHlwZTsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyA9IHsK
KyAgICBUZW1wb3JhbFVuaXQ6OlllYXIsCisgICAgVGVtcG9yYWxVbml0OjpNb250aCwKKyAgICBU
ZW1wb3JhbFVuaXQ6OldlZWssCisgICAgVGVtcG9yYWxVbml0OjpEYXksCit9OworCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJh
dGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0aW9uKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPElTTzg2
MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RUaW1lID0gaW5zdGFudC0+ZXhhY3RUaW1lKCkuYWRkKGR1
cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFkZGl0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVk
IHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3Jl
YXRlSWZWYWxpZChnbG9iYWxPYmplY3QsICpuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0
aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9u
YWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUo
KS5hZGQoLWR1cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUg
b2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5z
dGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsICpuZXdFeGFjdFRpbWUpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNV
bnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50aWwg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwor
ICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdCA9IGluc3RhbnQtPmRpZmZlcmVuY2UoZ2xvYmFs
T2JqZWN0LCBvdGhlciwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0
KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQq
IGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlw
ZS5zaW5jZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAg
VGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gb3RoZXItPmRpZmZlcmVuY2Uo
Z2xvYmFsT2JqZWN0LCBpbnN0YW50LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92
ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jUm91bmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7
CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlm
IChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCBy
ZXF1aXJlcyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGlt
ZSBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3Rh
bnRTdHJ1Y3R1cmUoKSwgbmV3RXhhY3RUaW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3Rh
bnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1w
b3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpbnN0YW50LT5leGFjdFRpbWUoKSA9PSBvdGhlci0+
ZXhhY3RUaW1lKCkpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9TdHJp
bmcoIFsgb3B0aW9ucyBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLmluc3RhbnQucHJvdG90eXBlLnRvc3RyaW5nCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZygpKSkpOwor
fQorCisvLyBGSVhNRTogSXMgdGhpcyBiZXR0ZXIgYXMgYSBKU0J1aWx0aW4/CitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0xvY2FsZVN0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSW50
bERhdGVUaW1lRm9ybWF0KiBmb3JtYXR0ZXIgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgZm9ybWF0dGVyLT5pbml0aWFsaXplRGF0
ZVRpbWVGb3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgLy8gRklYTUU6IGNoYW5nZSBJbnRsRGF0ZVRpbWVGb3JtYXQgdG8gdXNlIGVwb2NoTmFu
b3NlY29uZHMKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShm
b3JtYXR0ZXItPmZvcm1hdChnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2No
TWlsbGlzZWNvbmRzKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90
b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgSW5zdGFudCB2YWx1
ZXMsIHVzZSBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUuZXBvY2hTZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFu
dCJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4
YWN0VGltZSgpLmVwb2NoU2Vjb25kcygpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBp
bnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90
eXBlLmVwb2NoTWlsbGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFu
dCJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4
YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUuZXBvY2hNaWNyb3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoZ2xvYmFsT2JqZWN0LCBpbnN0
YW50LT5leGFjdFRpbWUoKS5lcG9jaE1pY3Jvc2Vjb25kcygpKSkpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vj
b25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhh
Y3RUaW1lKCkuZXBvY2hOYW5vc2Vjb25kcygpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhkZGZiMTQ2OTg5NzhiOGMwN2UxOGIyMGVjOTNk
MzkyZDc5ODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcAppbmRleCA4M2NkNWRiMGQ5M2QwYWJmOWMyYWVhYTQ5NTdlOTI5ZTk4OGM0NmQyLi4x
ZWEyYjRmMTM5MTRjN2Y2ZTU5MDIyNzhjOTUxY2U0YTBkYTM1NmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0zMiwxMSArMzIs
MTQgQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxO
b3cuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVa
b25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgi
CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAt
NjUsNiArNjgsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihW
TSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBl
KCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVy
YXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGlj
IEpTVmFsdWUgY3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVj
dCkKK3sKKyAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9y
YWxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0
ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0
LT5pbnN0YW50U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0
YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8
VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwpAQCAtODksNiArOTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKIEBiZWdpbiB0ZW1wb3JhbE9iamVjdFRhYmxlCiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNh
bGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBEdXJh
dGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKKyAgSW5zdGFudCAgICAgICAgY3JlYXRlSW5zdGFudENvbnN0cnVjdG9yICAg
ICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5v
d09iamVjdCAgICAgICAgICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBQbGFp
blRpbWUgICAgICBjcmVhdGVQbGFpblRpbWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKICAgVGltZVpvbmUgICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAg
ICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCkBAIC0zNDksNiArMzYwLDE3IEBAIHZvaWQg
Zm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2ln
bmVkIGZyYWN0aW9uLCBzdGQ6CiAgICAgfQogfQogCisvLyBGb3JtYXRTZWNvbmRzU3RyaW5nUGFy
dCAoIHNlY29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kLCBwcmVjaXNp
b24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
Zm9ybWF0c2Vjb25kc3N0cmluZ3BhcnQKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwg
UHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7CisgICAgaWYgKHByZWNpc2lvbi51bml0ID09IFRl
bXBvcmFsVW5pdDo6TWludXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBidWlsZGVyLmFwcGVu
ZCgnOicsIHBhZCgnMCcsIDIsIHNlY29uZCkpOworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFj
dGlvbihidWlsZGVyLCBmcmFjdGlvbiwgcHJlY2lzaW9uLnByZWNpc2lvbik7Cit9CisKIC8vIE1h
eGltdW1UZW1wb3JhbER1cmF0aW9uUm91bmRpbmdJbmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3Jh
bGR1cmF0aW9ucm91bmRpbmdpbmNyZW1lbnQKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVt
Um91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0IHVuaXQpCkBAIC00MTAsNiArNDMyLDQzIEBA
IGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50
LCBSb3VuZGluZ01vZGUgbW9kZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCitzdGF0aWMgSW50MTI4IGFicyhJbnQxMjggeCkKK3sKKyAgICByZXR1cm4geCA8IDAgPyAt
eCA6IHg7Cit9CisKKy8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIEludDEyOAorSW50MTI4IHJv
dW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4IHgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5n
TW9kZSBtb2RlKQoreworICAgIGlmIChpbmNyZW1lbnQgPT0gMSkKKyAgICAgICAgcmV0dXJuIHg7
CisKKyAgICBJbnQxMjggcXVvdGllbnQgPSB4IC8gaW5jcmVtZW50OworICAgIEludDEyOCByZW1h
aW5kZXIgPSB4ICUgaW5jcmVtZW50OworICAgIGlmICghcmVtYWluZGVyKQorICAgICAgICByZXR1
cm4geDsKKworICAgIGJvb2wgc2lnbiA9IHJlbWFpbmRlciA8IDA7CisgICAgc3dpdGNoIChtb2Rl
KSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CisgICAgICAgIGlmICghc2lnbikKKyAg
ICAgICAgICAgIHF1b3RpZW50Kys7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpGbG9vcjoKKyAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICBxdW90aWVudC0tOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICAvLyAiaGFs
ZiB1cCBhd2F5IGZyb20gemVybyIKKyAgICAgICAgaWYgKGFicyhyZW1haW5kZXIgKiAyKSA+PSBp
bmNyZW1lbnQpCisgICAgICAgICAgICBxdW90aWVudCArPSBzaWduID8gLTEgOiAxOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHF1b3RpZW50ICogaW5jcmVtZW50OworfQorCiBU
ZW1wb3JhbE92ZXJmbG93IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogb3B0aW9ucykKIHsKICAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1w
b3JhbE92ZXJmbG93PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5w
cm9wZXJ0eU5hbWVzLT5vdmVyZmxvdywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4IGM0YjFkNDcyNmIzNDZkNTE5YTU2ZmFhMzIxNmJkZmM4
OGU5OTIxODMuLjdiYTNmMTRhY2M2NWZjNDQxNTZhMDdkNGY2MDI4ODdiMTAxMjVlODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEs
NiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTUyLDYgKzUzLDIwIEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVy
T2ZUZW1wb3JhbFVuaXRzID0gMCBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NPVU5UCiBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyA9IDAgSlND
X1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTKTsKICN1
bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMKIAorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyN0YWJsZS10ZW1wb3JhbC10ZW1wb3JhbGR1cmF0aW9ubGlrZS1wcm9wZXJ0
aWVzCitzdGF0aWMgY29uc3RleHByIFRlbXBvcmFsVW5pdCB0ZW1wb3JhbFVuaXRzSW5UYWJsZU9y
ZGVyW251bWJlck9mVGVtcG9yYWxVbml0c10gPSB7CisgICAgVGVtcG9yYWxVbml0OjpEYXksCisg
ICAgVGVtcG9yYWxVbml0OjpIb3VyLAorICAgIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsCisg
ICAgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSwK
KyAgICBUZW1wb3JhbFVuaXQ6Ok1vbnRoLAorICAgIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwK
KyAgICBUZW1wb3JhbFVuaXQ6OlNlY29uZCwKKyAgICBUZW1wb3JhbFVuaXQ6OldlZWssCisgICAg
VGVtcG9yYWxVbml0OjpZZWFyLAorfTsKKwogY2xhc3MgVGVtcG9yYWxPYmplY3QgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7CkBAIC0xMDIsOSArMTE3LDExIEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHRlbXBvcmFsRnJhY3Rpb25hbFNlY29uZERpZ2l0cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
CiBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogb3B0aW9ucyk7CiBSb3VuZGluZ01vZGUgdGVtcG9yYWxSb3VuZGluZ01vZGUoSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCosIFJvdW5kaW5nTW9kZSk7CiB2b2lkIGZvcm1hdFNlY29u
ZHNTdHJpbmdGcmFjdGlvbihTdHJpbmdCdWlsZGVyJiwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDo6
dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4pOwordm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nUGFy
dChTdHJpbmdCdWlsZGVyJiwgdW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJl
Y2lzaW9uRGF0YSk7CiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVt
ZW50KFRlbXBvcmFsVW5pdCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2
aWRlbmQsIGJvb2wgaW5jbHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRv
dWJsZSwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKK0ludDEyOCByb3VuZE51bWJl
clRvSW5jcmVtZW50KEludDEyOCwgSW50MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAog
ZW51bSBjbGFzcyBUZW1wb3JhbE92ZXJmbG93IDogYm9vbCB7CiAgICAgQ29uc3RyYWluLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDk5NmEwNmRhYWJhODJjY2VmYjQzZGYz
ZjY1ZjEzMWU2ZmRlNmVlMDcuLjQ4ZmQ2YzlhNjY5ZjUyMmNlNDczYTJhMzcyMTRkOGY2OGE2NTVl
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE2NCw2ICsxNjQsNyBA
QAogI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIu
aCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCkBAIC0xNTkxLDYgKzE1
OTIsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2Jq
ZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsQ2FsZW5kYXIpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBUZW1wb3JhbEluc3RhbnQpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgVGVtcG9yYWxQbGFpblRpbWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1w
b3JhbFRpbWVab25lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVp
bnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OEFycmF5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggN2E1OGIyNzllNjcwYTg0MDNkMWYzOTQxMjM1
N2Q1ZTc3MTEzZjU3OC4uYWJhMmY2NmEwN2IzN2IxNWM1ODVhMmY4NmYwYjZjZTRmMmYyODY0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xODYsNiArMTg2LDcgQEAgY2xhc3Mg
UmVnRXhwOwogI2VuZGlmCiBjbGFzcyBTeW1ib2w7CiBjbGFzcyBUZW1wb3JhbER1cmF0aW9uOwor
Y2xhc3MgVGVtcG9yYWxJbnN0YW50OwogY2xhc3MgVHlwZWRBcnJheUNvbnRyb2xsZXI7CiBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jazsKQEAgLTU5
Nyw2ICs1OTgsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpv
bmVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJy
YXlTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IGRlMGI0NWJkMGE4OGVhYmE0NjZiNmU2YzBhZDY2ZGMw
MmY1MjU3NDEuLjdiYjI3ZTk5NzZmYjE0ZTA2ZmE0ZWU0ODU1MzYxN2ZjYTA2ZDhkN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dURi93dGYvRGF0
ZU1hdGguaApAQCAtMzg4LDYgKzM4OCwxMSBAQCBpbmxpbmUgaW50IGRheUluTW9udGhGcm9tRGF5
SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCiAgICAgcmV0dXJuIGQgLSBzdGVw
OwogfQogCitpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3VyLCBkb3VibGUgbWluLCBk
b3VibGUgc2VjLCBkb3VibGUgbXMpCit7CisgICAgcmV0dXJuICgoKGhvdXIgKiBXVEY6Om1pbnV0
ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0ZSArIHNlYykgKiBXVEY6Om1z
UGVyU2Vjb25kICsgbXMpOworfQorCiAvLyBSZXR1cm5zIGNvbWJpbmVkIG9mZnNldCBpbiBtaWxs
aXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBMb2NhbFRpbWVPZmZzZXQg
Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxpc2Vjb25kcywgVGltZVR5
cGUgPSBVVENUaW1lKTsKIApAQCAtNDEwLDYgKzQxNSw3IEBAIHVzaW5nIFdURjo6bXNUb0hvdXJz
OwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyTWludXRl
OwogdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzOwordXNp
bmcgV1RGOjp0aW1lVG9NUzsKIHVzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOwogdXNp
bmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7CiB1c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9m
ZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oIGIvU291cmNlL1dURi93
dGYvSW50MTI4LmgKaW5kZXggNjVmZTgzMjQzYTIwODNhY2NmYzY5YzBjNjM1ZDU2YTg4MDM0NTY0
MC4uMmRkNTA0NGJhZTEwMzE1MDZiOWVlMTI2ZDdiZWZmZGMwYTE4YmM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvSW50MTI4LmgKKysrIGIvU291cmNlL1dURi93dGYvSW50MTI4LmgKQEAg
LTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgICAgICA6IGxvd18ge3N0YXRpY19jYXN0PHN0ZDo6
dWludDY0X3Q+KG4pfQogICAgICAgICAsIGhpZ2hfIHstc3RhdGljX2Nhc3Q8c3RkOjp1aW50NjRf
dD4obiA8IDApfQogICAgIHsgfQorICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKGNvbnN0IEludDEy
OEltcGw8IUlTX1NJR05FRD4gbikKKyAgICAgICAgOiBsb3dfIHsgbi5sb3coKSB9LCBoaWdoXyB7
IG4uaGlnaCgpIH0geyB9CiAgICAgY29uc3RleHByIEludDEyOEltcGwoY29uc3QgSW50MTI4SW1w
bCAmKSA9IGRlZmF1bHQ7CiAgICAgY29uc3RleHByIEludDEyOEltcGwoSW50MTI4SW1wbCAmJikg
PSBkZWZhdWx0OwogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsICZvcGVyYXRvcj0oY29uc3QgSW50
MTI4SW1wbCAmKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5YWVhYmJjYTQyZmIzNWVkMjQxYmY1MjMwNTIyNTkyNTQ5
MmU4MWYuLmZkNTU1OTM0YTM5OThiYTg1OGRmNGE4NTY0OTBiZDlhYzY1NzRhYjAgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC1p
bnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZE5v
dEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGluc3RhbnRzLmZvckVhY2gp
OgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LlRlbXBvcmFsLkluc3RhbnQpOgorICAgICAgICAq
IHRlc3QyNjIvY29uZmlnLnlhbWw6IE5vIG5lZWQgdG8gaWdub3JlIGFsbCBUZW1wb3JhbC5JbnN0
YW50IHRlc3RzCisgICAgICAgICAgYW55bW9yZSwgb25seSB0aGUgb25lcyBmb3IgdGhlIHVuaW1w
bGVtZW50ZWQgbWV0aG9kcy4KKwogMjAyMS0xMC0wNiAgUGhpbGlwIENoaW1lbnRvICA8cGNoaW1l
bnRvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMgYi9KU1Rlc3RzL3N0cmVzcy90
ZW1wb3JhbC1pbnN0YW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMTM0NTlkYzQ5OGQyNzg1ZTQ5MTE2OGM2
ZTEwZmFhNzdiZWE0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3Jh
bC1pbnN0YW50LmpzCkBAIC0wLDAgKzEsMjkyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
VGVtcG9yYWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBl
Y3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91
bGROb3RCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgYSB2YWx1ZSB0byBiZSBkaWZmZXJl
bnQgZnJvbSAke2V4cGVjdGVkfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKwor
ICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwobWVzc2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAgICAgICBpZiAoIW1l
c3NhZ2UudGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21lc3NhZ2V9IWApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVz
c2FnZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIGVwb2NoCit7CisgICAgY29uc3QgaW5z
dGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hNaWNyb3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaE5hbm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTcw
LTAxLTAxVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFu
dCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgMCk7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIDApOworICAgICAgICBzaG91
bGRCZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
U3RyaW5nKCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LnRvSlNPTigpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8g
cG9zaXRpdmUgZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAg
bmV3IFRlbXBvcmFsLkluc3RhbnQoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAg
ICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMV8wMDBfMDAwXzAwMCksCisgICAg
ICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDFfMDAwXzAwMF8wMDBf
MDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoMV8w
MDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2No
TmFub3NlY29uZHMoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzIwMDEtMDktMDlUMDE6NDY6NDBaJyksCisgICAgXTsKKyAgICBpbnN0
YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hTZWNvbmRzLCAxXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE1pbGxpc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWljcm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBf
MDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzIwMDEtMDktMDlU
MDE6NDY6NDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMDAxLTA5
LTA5VDAxOjQ2OjQwWicpOworICAgIH0pOworfQorCisvLyBuZWdhdGl2ZSBlcG9jaCB2YWx1ZQor
eworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgt
MV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaFNlY29uZHMoLTFfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDBfMDAw
biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoLTFfMDAw
XzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTM4LTA0LTI0VDIyOjEzOjIwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5z
dGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgLTFfMDAw
XzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAt
MV8wMDBfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9z
ZWNvbmRzLCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3Rh
bnQuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTkzOC0wNC0yNFQyMjoxMzoyMFonKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBa
Jyk7CisgICAgfSk7Cit9CisKKy8vIG1heGludDY0IGVwb2NoIHZhbHVlCit7CisgICAgY29uc3Qg
aW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDkyMjMzNzIwMzY4NTQ3
NzU4MDduKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyg5
MjIzMzcyMDM2ODU0Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjI2
Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDdaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JF
YWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRz
LCA5MjIzMzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25k
cywgOTIyMzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3Nl
Y29uZHMsIDkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE5hbm9zZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQudG9TdHJpbmcoKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3
NzU4MDdaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbmludDY0IGVwb2NoIHZhbHVlCit7CisgICAg
Y29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KC05MjIzMzcy
MDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3Nl
Y29uZHMoLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKSwKKyAgICBdOworICAgIGluc3Rh
bnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aFNlY29uZHMsIC05MjIzMzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
bGxpc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoTWljcm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1ODA4bik7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0
MTkyWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTY3Ny0wOS0yMVQw
MDoxMjo0My4xNDUyMjQxOTJaJyk7CisgICAgfSk7Cit9CisKKy8vIG1heCBJbnN0YW50IHJhbmdl
Cit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50
KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb21FcG9jaFNlY29uZHMoODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoODY0MDBfMDAwMF8wMDAwXzAwMCksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
ODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnKzI3NTc2MC0wOS0xM1QwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZv
ckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29u
ZHMsIDg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxs
aXNlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTWljcm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMG4pOworICAgICAgICBz
aG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAw
XzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcrMjc1NzYwLTA5
LTEzVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnKzI3
NTc2MC0wOS0xM1QwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gbWluIEluc3RhbnQgcmFu
Z2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3Rh
bnQoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaFNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwKSwKKyAg
ICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTg2NDAwXzAwMDBf
MDAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3Nl
Y29uZHMoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0
YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hTZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pbGxpc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtODY0MDBfMDAwMF8w
MDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwg
Jy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9K
U09OKCksICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyB0b28g
bGFyZ2UKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAwMDBf
MDAwMF8wMDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvXGI4NjQwMDAwMDAwMDAwMDAwMDAwMDAx
XGIvKTsKKy8vIHRvbyBzbWFsbAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3Rh
bnQoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvLTg2NDAwMDAw
MDAwMDAwMDAwMDAwMDFcYi8pOworLy8gbGFyZ2VyIHRoYW4gbWF4aW50MTI4CitzaG91bGRUaHJv
dygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgxbiA8PCAxMjluKSwgUmFuZ2VFcnJvciwgL1xi
NjgwNTY0NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYzNTM2NDIyOTEyXGIvKTsKKy8vIHNtYWxsZXIg
dGhhbiBtaW5pbnQxMjgKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KC0x
biA8PCAxMjluKSwgUmFuZ2VFcnJvciwgLy02ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1
MzY0MjI5MTJcYi8pOworLy8gZG9lcyBub3QgY3Jhc2ggd2hlbiBiaWdpbnQgbG9uZ2VyIHRoYW4g
bWF4aW50MzIgZGlnaXRzCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudChC
aWdJbnQoJzknLnJlcGVhdCgyMTQ3NDgzNjQ3KSkpLCBSYW5nZUVycm9yKTsKKy8vIGNvbnN0cnVj
dHMgZnJvbSBzdHJpbmcKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5JbnN0YW50KCcwJykuZXBvY2hO
YW5vc2Vjb25kcywgMG4pOworLy8gdGhyb3dzIG9uIG51bWJlcgorc2hvdWxkVGhyb3coKCkgPT4g
bmV3IFRlbXBvcmFsLkluc3RhbnQoMCksIFR5cGVFcnJvcik7CisvLyB0aHJvd3Mgb24gc3RyaW5n
IHRoYXQgZG9lcyBub3QgY29udmVydCB0byBCaWdJbnQKK3Nob3VsZFRocm93KCgpID0+IG5ldyBU
ZW1wb3JhbC5JbnN0YW50KCdhYmMxMjMnKSwgU3ludGF4RXJyb3IpOworCisvLyBJbnN0YW50LmZy
b20oaW5zdGFudCkgaXMgbm90IHRoZSBzYW1lIG9iamVjdAoreworICAgIGNvbnN0IGluc3QgPSBU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzIwMjAtMDItMTJUMTE6NDIrMDE6MDBbRXVyb3BlL0Ftc3Rl
cmRhbV0nKTsKKyAgICBzaG91bGROb3RCZShUZW1wb3JhbC5JbnN0YW50LmZyb20oaW5zdCksIGlu
c3QpOworfQorCisvLyB0b1N0cmluZworCit7CisgICAgY29uc3QgaTEgPSBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjNaJyk7CisgICAgY29uc3QgaTIgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzBaJyk7CisgICAgY29uc3QgaTMgPSBUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8v
IGRlZmF1bHQgaXMgdG8gZW1pdCBzZWNvbmRzIGFuZCBkcm9wIHRyYWlsaW5nIHplcm9zIGFmdGVy
IHRoZSBkZWNpbWFsJworICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1
OjIzOjAwWicpOworICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIz
OjMwWicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjMw
LjEyMzRaJyk7CisKKyAgICAvLyB0cnVuY2F0ZXMgdG8gbWludXRlCisgICAgW2kxLCBpMiwgaTNd
LmZvckVhY2goKGkpID0+IHNob3VsZEJlKGkudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51
dGUnIH0pLCAnMTk3Ni0xMS0xOFQxNToyM1onKSk7CisKKyAgICAvLyBvdGhlciBzbWFsbGVzdFVu
aXRzIGFyZSBhbGlhc2VzIGZvciBmcmFjdGlvbmFsIGRpZ2l0cworICAgIHNob3VsZEJlKGkzLnRv
U3RyaW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlv
bmFsU2Vjb25kRGlnaXRzOiAwIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxs
ZXN0VW5pdDogJ21pbGxpc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25k
RGlnaXRzOiAzIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDog
J21pY3Jvc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA2
IH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ25hbm9zZWNv
bmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDkgfSkpOworCisg
ICAgLy8gdHJ1bmNhdGUgb3IgcGFkIHRvIDIgcGxhY2VzCisgICAgeworICAgICAgICBjb25zdCBv
cHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAyIH07CisgICAgICAgIHNob3VsZEJl
KGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzowMC4wMFonKTsKKyAgICAg
ICAgc2hvdWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjAw
WicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTJaJyk7CisgICAgfQorICAgIC8vIHBhZCB0byA3IHBsYWNlcworICAgIHsKKyAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNyB9OworICAg
ICAgICBzaG91bGRCZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAu
MDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2
LTExLTE4VDE1OjIzOjMwLjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5n
KG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0MDAwWicpOworICAgIH0KKworICAg
IC8vIHJvdW5kIHRvIG5lYXJlc3QKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxsZXN0
VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0x
OFQxNToyNFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmRE
aWdpdHM6IDMsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjNaJyk7CisgICAgLy8gcm91bmQgdXAKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7
IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0x
MS0xOFQxNToyNFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNv
bmREaWdpdHM6IDMsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjRaJyk7CisgICAgLy8gcm91bmQgZG93bgorICAgIFsnZmxvb3InLCAndHJ1bmMnXS5mb3JF
YWNoKChyb3VuZGluZ01vZGUpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBz
bWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIz
WicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdp
dHM6IDMsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOworICAg
IH0pOworCisgICAgeworICAgICAgICAvLyByb3VuZGluZyBkb3duIGlzIHRvd2FyZHMgdGhlIEJp
ZyBCYW5nLCBub3QgdG93YXJkcyAxIEJDRQorICAgICAgICBjb25zdCBpNCA9IFRlbXBvcmFsLklu
c3RhbnQuZnJvbSgnLTAwMDA5OS0xMi0xNVQxMjowMDowMC41WicpOworICAgICAgICBzaG91bGRC
ZShpNC50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcsIHJvdW5kaW5nTW9kZTogJ2Zs
b29yJyB9KSwgJy0wMDAwOTktMTItMTVUMTI6MDA6MDBaJyk7CisKKyAgICAgICAgLy8gcm91bmRp
bmcgY2FuIGFmZmVjdCBhbGwgdW5pdHMKKyAgICAgICAgY29uc3QgaTUgPSBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OTk5WicpOworICAgICAgICBzaG91
bGRCZShpNS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDgsIHJvdW5kaW5nTW9k
ZTogJ2hhbGZFeHBhbmQnIH0pLCAnMjAwMC0wMS0wMVQwMDowMDowMC4wMDAwMDAwMFonKTsKKyAg
ICB9Cit9CisKKy8vIGxlYXAgc2Vjb25kIGlzIGNvbnN0cmFpbmVkCitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzIwMTYtMTItMzFUMjM6NTk6NjBaJyl9YCwgJzIwMTYtMTItMzFU
MjM6NTk6NTlaJyk7CisvLyB2YXJpYW50IHRpbWUgc2VwYXJhdG9ycworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4IDE1OjIzWicpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjAwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
dDE1OjIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gdmFyaWFudCBVVEMgZGVz
aWduYXRvcgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1
OjIzeicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gYW55IG51bWJlciBvZiBkZWNp
bWFsIHBsYWNlcworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIz
OjMwLjEyMzRaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NVonKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTZaJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzNDU2WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1OjIzOjMwLjEyMzQ1NjdaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2
N1onKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjM0NTY3OFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3OFonKTsKK3No
b3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0
NTY3ODlaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5WicpOworLy8gdmFyaWFu
dCBkZWNpbWFsIHNlcGFyYXRvcgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTc2LTExLTE4VDE1OjIzOjMwLDEyWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOwor
Ly8gdmFyaWFudCBtaW51cyBzaWduCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTJcdTIyMTIwMjowMCcpfWAsICcxOTc2LTExLTE4VDE3OjIz
OjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCdcdTIyMTIwMDk5
OTktMTEtMThUMTU6MjM6MzAuMTJaJyl9YCwgJy0wMDk5OTktMTEtMThUMTU6MjM6MzAuMTJaJyk7
CisvLyBtaXh0dXJlIG9mIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKK3Nob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2
LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYtMTEtMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicp
Oworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMw
LjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYxMTE4VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1MjMzMC4xKzAwOjAw
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5
NzYtMTEtMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1OjIzOjMw
LjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2
LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFa
Jyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMz
MC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2
LTExLTE4VDE1OjIzOjMwLjFaJyk7CisvLyBvcHRpb25hbCBwYXJ0cworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwKzAwJyl9YCwgJzE5NzYtMTEt
MThUMTU6MjM6MzBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTVaJyl9YCwgJzE5NzYtMTEtMThUMTU6MDA6MDBaJyk7CisvLyBpZ25vcmVzIGFueSBz
cGVjaWZpZWQgY2FsZW5kYXIKKy8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhcgorLy8gc2hvdWxkQmUo
YCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpb
dS1jYT1kaXNjb3JkXScpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8v
IG5vIGp1bmsgYXQgZW5kIG9mIHN0cmluZworc2hvdWxkVGhyb3coKCkgPT4gVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpqdW5rJyksIFJhbmdlRXJy
b3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDBhNjk5ODU4YzZjYzNkZjdjZTM0M2U0ZDFhYmRkOWJi
MjlmZmI1YWIuLjM1MjM0MTI0NjBjMmI3ZmQyYmE1ZjY2Y2E3OWVjNWIyNTYxMDE0MjYgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKQEAgLTIzLDcgKzIzLDggQEAgc2tpcDoKICAgICAtIFNoYWRvd1JlYWxtCiAg
IHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQpA
QCAtMzQsNyArMzUsOCBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvVGlt
ZVpvbmUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1pvbmVkRGF0ZVRpbWUKICAgICAt
IHRlc3QvaW50bDQwMi9UZW1wb3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBv
cmFsL0luc3RhbnQKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlw
ZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3By
b3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9O
b3cKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3QvaW50
bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0yNDQsNiArMjQ2LDcgQEAgc2tpcDoKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9z
bWFsbGVzdHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5q
cwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFs
L3VuaXQtcGx1cmFscy1hY2NlcHRlZC5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
SW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvc21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0ZWQu
anMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2NhbGVu
ZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxh
aW5UaW1lL2Zyb20vY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0
LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL2VxdWFscy9jYWxlbmRhci10ZW1wb3Jh
bC1vYmplY3QuanMKQEAgLTI2OSw2ICsyNzIsMTMgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9vcmRlci1vZi1vcGVyYXRp
b25zLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUv
dG90YWwvZGF0ZXVudGlsLWZpZWxkLmpzCiAKKyAgICAjIERlcGVuZHMgb24gVGVtcG9yYWwuVGlt
ZVpvbmUKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3Rv
U3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCisg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90
aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKKyAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25l
LWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLXdyb25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLXN0cmluZy1k
YXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5
cGUvdG9TdHJpbmcvdGltZXpvbmUuanMKKwogICAgICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5ab25l
ZERhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJl
L3JlbGF0aXZldG8tem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZldG8t
em9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdl
ci5qcwpAQCAtMjk2LDYgKzMwNiwxMSBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10
aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5qcwogICAgIC0gdGVz
dC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8t
em9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFu
Z2UuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90
b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29u
ZHNmb3Itd3JvbmctdHlwZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFu
dC9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0luc3RhbnQvZnJvbS9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9lcXVhbHMvYXJndW1lbnQt
em9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9w
cm90b3R5cGUvc2luY2UvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvYXJndW1lbnQtem9uZWRkYXRl
dGltZS5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBhcmUv
YXJndW1lbnQtem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25l
ZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpz
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVu
dC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1vZi1y
YW5nZS5qcwpAQCAtMzMxLDUgKzM0Niw2IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvcm91bmQvYmFsYW5jZS1uZWdhdGl2ZS1yZXN1bHQu
anMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3Vu
ZC9yb3VuZC1uZWdhdGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcwor
ICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvaW5z
dGFudC1zdHJpbmcuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9w
cm90b3R5cGUvc2luY2UvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCiAgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3VudGlsL2JhbGFuY2UtbmVn
YXRpdmUtdGltZS11bml0cy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441022</attachid>
            <date>2021-10-12 17:24:47 -0700</date>
            <delta_ts>2021-10-21 21:54:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211012172446.patch</filename>
            <type>text/plain</type>
            <size>123088</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTNkOWY2NDBmNzFkN2U3ODAzZjEyYWRmMDdhOWU4YzE0MDFkYjYzLi4zZjI2YmZkMDM5MzcyYTRk
OWVjNWI0ZTcwOTQ3ODE5YzhiNmIwYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMjEtMDktMjMgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBydW50aW1lL0lTTzg2MDEuY3BwOgorICAgICAgICAoSlNDOjpJU084NjAxOjpw
YXJzZUluc3RhbnQpOiBBZGQgYSBwYXJzaW5nIGZ1bmN0aW9uIGZvciBJbnN0YW50IHN0cmluZ3MK
KyAgICAgICAgICByZXVzaW5nIGFzIG11Y2ggYXMgcG9zc2libGUgZnJvbSB0aGUgb3RoZXIgcGFy
c2luZyBmdW5jdGlvbnMuCisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUlT
T1BhcnRzQW5kT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjphZGQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kKToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpkaWZmZXJlbmNlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgICogcnVudGlt
ZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6RXhhY3RUaW1l
KTogQWRkIGFuIEV4YWN0VGltZSB0eXBlIHRoYXQgd3JhcHMKKyAgICAgICAgICBhbiBJbnQxMjgg
YW5kIGNhbiBkbyB0aGUgYmFzaWMgb3BlcmF0aW9ucy4gVGhpcyB0eXBlIGNhbiBiZSByZXVzZWQg
aW4KKyAgICAgICAgICBUZW1wb3JhbC5ab25lZERhdGVUaW1lLgorICAgICAgICAoSlNDOjpJU084
NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNP
ODYwMTo6RXhhY3RUaW1lOjplcG9jaFNlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjpFeGFjdFRpbWU6OmVwb2NoTWlsbGlzZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SVNPODYwMTo6RXhhY3RUaW1lOjplcG9jaE1pY3Jvc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChK
U0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBvY2hOYW5vc2Vjb25kcyBjb25zdCk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6bmFub3NlY29uZHNGcmFjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6cHJpbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OkV4YWN0VGltZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGlt
ZTo6b3BlcmF0b3I+IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKTog
QWRkIGEgbWluaW1hbAorICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYW5kbGVEYXRl
VGltZVZhbHVlIGFic3RyYWN0IG9wIGZyb20gdGhlCisgICAgICAgICAgVGVtcG9yYWwgc3BlY2lm
aWNhdGlvbiwgb25seSBjb3ZlcmluZyBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOiBVc2UgaXQgaW4gdGhlIGV4aXN0aW5nCisgICAgICAg
ICAgSW50bC5EYXRlVGltZUZvcm1hdCBtZXRob2RzLgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJ
bnQuY3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6IEFkZCBhbiBvdmVy
bG9hZCB0aGF0IHRha2VzIGFuIEludDEyOC4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6
IFJlbW92ZSBkZWNsYXJhdGlvbiBmb3Igbm9uZXhpc3RlbnQgdG9VaW50NjRIZWFwKCkuCisgICAg
ICAgICogcnVudGltZS9KU0RhdGVNYXRoLmNwcDogTW92ZSB0aW1lVG9NUygpIGludG8gV1RGLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5zdGFudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlv
bjo6ZnJvbUR1cmF0aW9uTGlrZSk6IEFjY2VzcyBEdXJhdGlvbiBwcm9wZXJ0aWVzIGluCisgICAg
ICAgICAgdGhlIG9yZGVyIGRlZmluZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0aW9uKTogQWRkZWQuCisgICAgICAg
IChKU0M6OlRlbXBvcmFsRHVyYXRpb246OndpdGggY29uc3QpOiBBY2Nlc3MgRHVyYXRpb24gcHJv
cGVydGllcyBpbiB0aGUKKyAgICAgICAgICBvcmRlciBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0
aW9uLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFs
SW5zdGFudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50
OjpUZW1wb3JhbEluc3RhbnQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
SW5zdGFudDo6ZnJvbSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2No
U2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlz
ZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3Nl
Y29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNv
bmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpjb21wYXJlKToKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3I6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGU6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
Zm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6YWJzKTogQWRk
ZWQgZm9yIGNsYXJpdHkuCisgICAgICAgIChKU0M6OnJvdW5kTnVtYmVyVG9JbmNyZW1lbnQpOiBB
ZGQgb3ZlcmxvYWQgZm9yIEludDEyOC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0
Lmg6IEFkZCBhcnJheSBjb3JyZXNwb25kaW5nIHRvIHRoZSB0YWJsZSBpbiB0aGUKKyAgICAgICAg
ICBzcGVjIHRleHQgc3BlY2lmeWluZyBhbHBoYWJldGljYWwgYWNjZXNzIG9yZGVyIGZvciB1bml0
IHByb3BlcnRpZXMuCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIxLTEwLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVjcmVhc2UgdXNlIG9mIG1ha2VXZWFrUHRyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTJlZWUxMjZmNzAy
ZDU5NGY2YTJmYThhNTNjNzY0NDI1NGJlNDBkOC4uMzdjYjlkYzlmMjlmNGYyMmE0NzRkNGRmODE4
ZWJjNjY3NjFkNzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wOS0yMyAgUGhpbGlwIENo
aW1lbnRvICA8cGNoaW1lbnRvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50
IFRlbXBvcmFsLkluc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OnRpbWVUb01TKTogTW92
ZWQgZnJvbSBKU0RhdGVNYXRoLmguCisgICAgICAgICogd3RmL0ludDEyOC5oOgorICAgICAgICAo
V1RGOjpJbnQxMjhJbXBsOjpJbnQxMjhJbXBsKTogQWRkIGEgY29udmVyc2lvbiBmcm9tIEludDEy
OCB0byBVSW50MTI4CisgICAgICAgICAgYW5kIHZpY2UgdmVyc2EuCisKIDIwMjEtMTAtMTIgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNv
bWUgdW51c2VkIFVJS2l0IFNQSSBkZWNsYXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBkNzBiYTUyZDYxZmRmMDk5NWNiMWEyMmIwZGZhZmQ4ZTJlMGJkM2RjLi4y
ZTk5ZWRiMWUyNmYyNjNkN2MyZWIzZGUyYzY5NTUyNTBiMjhjZWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTEsNiArMTExLDggQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAppbmRleCAwNmIyMTc1MTJjNmZiYzJkODUyNzI0YWFhNzZmYTU3OTRlM2RhZDZj
Li4wZTMyNzViODhjYmIwYjg1MjhmNzgyNDc5Yzc2ZWZhMDAyOWMwYWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtMTczLDYgKzE3Myw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29u
c3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBjYjA1ZDgyMTYy
YWQ5YzRjZmY2NGNhMThjYWVhZTE4NzFiZWM2ZjYyLi5lMDU0YjMwNWZiMzQ0MTExNWViZTMxNjM0
NGVmMTkzNGVmMDM5MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC03MCw2ICs3MCw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25D
b25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsTm93Lmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVt
cG9yYWxPYmplY3QubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDc4OTc1NmYxMGY4YmRiODBj
NTJmNGJlOTgwZjUzZjQ5MmEyZDFkNGIuLjg5OGVjODk0OTRjOTM1YTFkZmRiOTRlYzkzMGMyYjdm
ODU3NDI4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0xOTUsNiArMTk1LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIFRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5s
dXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCisgICAgVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1
dC5oIFwKICAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWQxNzkyN2MzNjQzOGY4MDAyNzA4OWNlMjE1Nzk2OTE1
NzZiZGJkNS4uZWI0MmUyODY0ZjhlNjM5NGFjYTk1MTBiMDE1NDAyNGRiMTE1YWU5NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NzEsNiArMTk3MSwxMSBAQAogCQlFM0ZGNzUz
MzFEOUNFQTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQg
LyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVByb3Zp
ZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkQxMkVG
Mjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9y
YWxJbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggKi87IH07CisJ
CUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0My
NkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggKi87IH07CisJ
CUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNFMjZG
OTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLzsgfTsKKwkJRjZE
NjdENDcyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdENDUy
NkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICovOyB9
OworCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZE
NjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCAq
LzsgfTsKIAkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGMTUwMjAy
NjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovOyB9OwogCQlGRTA0MTU1
MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDQxNTUyMjUyRUMwNzMwMDkxRUI1RCAv
KiBTbG90VmlzaXRvck1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFMDVGQUZEMUZFNENFREEwMDA5MzIzMCAvKiBEZXByZWNhdGVkSW5z
cGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5MkQ2QTExMUZCRDQ5MUQwMDAyNDVGNCAvKiBEZXByZWNhdGVkSW5zcGVjdG9yVmFs
dWVzLmNwcCAqLzsgfTsKQEAgLTUzNjIsNiArNTM2NywxNCBAQAogCQlGNjkyQTg3RDAyNTU1OTdE
MDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0UwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdF
eHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg4
NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NKU1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNkQ2N0QzOTI2RjkwMkU1MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzRDI2Rjkw
MkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDQ2
MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUwMTgyNjkzRDMzRDAwNEI5OEVG
IC8qIFRlbXBvcmFsTm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBv
cmFsTm93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDE5MjY5M0QzM0Uw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY2RjE1MDFBMjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzA5Nyw2ICs3MTEwLDggQEAKIAkJCQk5OTZCNzMxNDFCRDlGQTJD
MDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUUzQzQ2MzA1MjZEQjVE
RTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJ
RTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0
LmggKi8sCisJCQkJRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJRjZGMTUwMjAyNjkzRDQ1MDAwNEI5
OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovLAogCQkJCTUzM0IxNURFMURDN0Y0NjMwMDRE
NTAwQSAvKiBXYXNtT3BzLmggKi8sCiAJCQkJQUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi8sCkBAIC04MDYwLDYgKzgw
NzUsMTIgQEAKIAkJCQlBM0M3RURCNDI2QjBEQjM3MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlv
bkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTNDN0VEQjUyNkIwREIzNzAwNEMzNEM1IC8qIFRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwICovLAogCQkJCUEzQzdFREIwMjZCMERCMzYwMDRDMzRD
NSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJRjZENjdEMzkyNkY5MDJF
NTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAgKi8sCisJCQkJRjZENjdEM0EyNkY5MDJF
NTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovLAorCQkJCUY2RDY3RDNCMjZGOTAyRTYw
MDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRjZENjdE
M0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggKi8sCisJ
CQkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHAgKi8sCisJCQkJRjZENjdEM0UyNkY5MDJFODAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oICovLAogCQkJCUY2RjE1MDFCMjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE5v
dy5jcHAgKi8sCiAJCQkJRjZGMTUwMTgyNjkzRDMzRDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93Lmgg
Ki8sCiAJCQkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmNwcCAq
LywKQEAgLTEwODAwLDYgKzEwODIxLDExIEBACiAJCQkJQTNDN0VEQjkyNkIwREIzODAwNEMzNEM1
IC8qIFRlbXBvcmFsRHVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQzdFREJBMjZCMERC
MzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQzdFREI2MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAzNDkgLyogVGVt
cG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2
RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ4MjZGOTEzMEMw
MDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3RTI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFp
blRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdCMjZFODY3QjgwMEU0QzI4QiAvKiBU
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBmMDQ0NTFkMDM4ZGIzMGM3NTFmNDZhOWE0ZDc0ODYzY2I2YjJk
ODU1Li4zMjA4OTc0YTkyOGE1NWY4N2RkNTgxNTI0YjM2NzAwYjU4M2E5MWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDE4LDYgKzEwMTgsOSBAQCBydW50aW1lL1RlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCiBydW50
aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcAorcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuY3BwCiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCBlNzJiZjcyNzdiMjJmMzc2NTI5NjRlZjQ0MzY2
MTBlOTYzNDMxZDljLi5iYmYxYWM0ZTI0N2U4YTkxNmJhODNkNzk2NmNmMmRkNGNlOGNjZDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcApAQCAtODc3LDYgKzg3
NywzNyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFs
PFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZQogICAgIH0pOwogfQogCitzdGQ6Om9wdGlv
bmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIC8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UZW1wb3JhbEluc3RhbnRT
dHJpbmcKKyAgICAvLyBUZW1wb3JhbEluc3RhbnRTdHJpbmcgOgorICAgIC8vICAgICBEYXRlIFRp
bWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyAgICAgRGF0ZSBEYXRlVGltZVNlcGFyYXRvciBU
aW1lU3BlYyBUaW1lWm9uZU9mZnNldFJlcXVpcmVkCisKKyAgICAvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVPZmZzZXRSZXF1aXJlZAorICAgIC8vIFRp
bWVab25lT2Zmc2V0UmVxdWlyZWQgOgorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldCBUaW1l
Wm9uZUJyYWNrZXRlZEFubm90YXRpb25fb3B0CisKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNG
b3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RXhhY3RU
aW1lPiB7CisgICAgICAgIGF1dG8gZGF0ZXRpbWUgPSBwYXJzZURhdGVUaW1lKGJ1ZmZlcik7Cisg
ICAgICAgIGlmICghZGF0ZXRpbWUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBhdXRvIFtkYXRlLCBtYXliZVRpbWUsIG1heWJlVGltZVpvbmVdID0gZGF0ZXRpbWUu
dmFsdWUoKTsKKyAgICAgICAgaWYgKCFtYXliZVRpbWVab25lIHx8ICghbWF5YmVUaW1lWm9uZS0+
bV96ICYmICFtYXliZVRpbWVab25lLT5tX29mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICAvLyBGSVhNRTogcGFyc2UgY2FsZW5kYXIgYW5ub3RhdGlvbgor
ICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBQbGFpblRpbWUgdGltZTsKKyAgICAgICAgaWYgKG1heWJlVGltZSkK
KyAgICAgICAgICAgIHRpbWUgPSBtYXliZVRpbWUudmFsdWUoKTsKKworICAgICAgICBpbnQ2NF90
IG9mZnNldCA9IG1heWJlVGltZVpvbmUtPm1feiA/IDAgOiAqbWF5YmVUaW1lWm9uZS0+bV9vZmZz
ZXQ7CisgICAgICAgIHJldHVybiB7IEV4YWN0VGltZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGRh
dGUueWVhcigpLCBkYXRlLm1vbnRoKCksIGRhdGUuZGF5KCksIHRpbWUuaG91cigpLCB0aW1lLm1p
bnV0ZSgpLCB0aW1lLnNlY29uZCgpLCB0aW1lLm1pbGxpc2Vjb25kKCksIHRpbWUubWljcm9zZWNv
bmQoKSwgdGltZS5uYW5vc2Vjb25kKCksIG9mZnNldCkgfTsKKyAgICB9KTsKK30KKwogLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0dGltZXpv
bmVvZmZzZXRzdHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90
IG9mZnNldCkKIHsKQEAgLTk2OSw1ICsxMDAwLDkwIEBAIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNv
bnN0IER1cmF0aW9uJiBkdXJhdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorRXhhY3RUaW1l
IEV4YWN0VGltZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24s
IHVpbnQ4X3QgZCwgdW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25l
ZCBtcywgdW5zaWduZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpCit7Cisg
ICAgQVNTRVJUKHkgPj0gLTk5OTk5OSAmJiB5IDw9IDk5OTk5OSk7CisgICAgQVNTRVJUKG1vbiA+
PSAxICYmIG1vbiA8PSAxMik7CisgICAgQVNTRVJUKGQgPj0gMSAmJiBkIDw9IDMxKTsKKyAgICBB
U1NFUlQoaCA+PSAwICYmIGggPD0gMjMpOworICAgIEFTU0VSVChtaW4gPj0gMCAmJiBtaW4gPD0g
NTkpOworICAgIEFTU0VSVChzID49IDAgJiYgcyA8PSA1OSk7CisgICAgQVNTRVJUKG1zID49IDAg
JiYgbXMgPD0gOTk5KTsKKyAgICBBU1NFUlQobWljcm9zID49IDAgJiYgbWljcm9zIDw9IDk5OSk7
CisgICAgQVNTRVJUKG5zID49IDAgJiYgbnMgPD0gOTk5KTsKKworICAgIGRvdWJsZSBkYXRlRGF5
cyA9IGRhdGVUb0RheXNGcm9tMTk3MCh5LCBtb24gLSAxLCBkKTsKKyAgICBkb3VibGUgdGltZU1z
ID0gdGltZVRvTVMoaCwgbWluLCBzLCBtcyk7CisgICAgZG91YmxlIHV0Y01zID0gZGF0ZURheXMg
KiBtc1BlckRheSArIHRpbWVNczsKKyAgICBJbnQxMjggdXRjTnMgPSBJbnQxMjggeyBzdGF0aWNf
Y2FzdDxpbnQ2NF90Pih1dGNNcykgfSAqIDEnMDAwJzAwMCArIG1pY3JvcyAqIDEwMDAgKyBuczsK
KyAgICByZXR1cm4gRXhhY3RUaW1lIHsgdXRjTnMgLSBvZmZzZXQgfTsKK30KKworc3RkOjpvcHRp
b25hbDxFeGFjdFRpbWU+IEV4YWN0VGltZTo6YWRkKER1cmF0aW9uIGR1cmF0aW9uKSBjb25zdAor
eworICAgIEFTU0VSVCghZHVyYXRpb24ueWVhcnMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5t
b250aHMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi53ZWVrcygpKTsKKyAgICBBU1NFUlQoIWR1
cmF0aW9uLmRheXMoKSk7CisKKyAgICBJbnQxMjggcmVzdWx0TnMgeyBtX2Vwb2NoTmFub3NlY29u
ZHMgfTsKKworICAgIC8vIFRoZSBkdXJhdGlvbidzIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBh
bmQgbWlsbGlzZWNvbmRzIHNob3VsZCBiZQorICAgIC8vIGFibGUgdG8gYmUgY2FzdCBpbnRvIGEg
NjQtYml0IGludC4gMioxZTggMjQtaG91ciBkYXlzIGlzIHRoZSBtYXhpbXVtCisgICAgLy8gdGlt
ZSBzcGFuIGZvciBleGFjdCB0aW1lLCBzbyBpZiB3ZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgZHVy
YXRpb24gZXhjZWVkcworICAgIC8vIHRoYXQsIHRoZW4gd2UgY2FuIGJhaWwgb3V0LgorCisgICAg
aWYgKGZhYnMoZHVyYXRpb24uaG91cnMoKSkgPiA0ODAwMDAwMDAwKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJlc3VsdE5zICs9IEludDEyOCB7IHN0YXRpY19jYXN0PGludDY0
X3Q+KGR1cmF0aW9uLmhvdXJzKCkpIH0gKiBFeGFjdFRpbWU6Om5zUGVySG91cjsKKyAgICBpZiAo
ZmFicyhkdXJhdGlvbi5taW51dGVzKCkpID4gMjg4MDAwMDAwMDAwKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJlc3VsdE5zICs9IEludDEyOCB7IHN0YXRpY19jYXN0PGludDY0
X3Q+KGR1cmF0aW9uLm1pbnV0ZXMoKSkgfSAqIEV4YWN0VGltZTo6bnNQZXJNaW51dGU7CisgICAg
aWYgKGZhYnMoZHVyYXRpb24uc2Vjb25kcygpKSA+IDEuNzI4ZSsxMykKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHROcyArPSBJbnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2
NF90PihkdXJhdGlvbi5zZWNvbmRzKCkpIH0gKiBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kOworICAg
IGlmIChmYWJzKGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpKSA+IDEuNzI4ZSsxNikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHROcyArPSBJbnQxMjggeyBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihkdXJhdGlvbi5taWxsaXNlY29uZHMoKSkgfSAqIEV4YWN0VGltZTo6bnNQZXJN
aWxsaXNlY29uZDsKKyAgICAvLyBGSVhNRTogcHJlY2lzaW9uLiBjaGVjayBpZiB0aGVyZSBpcyBz
dWNoIGEgdGhpbmcgYXMgY2hlY2tlZCBpbnRlZ2VyCisgICAgLy8gYXJpdGhtZXRpYyBpbiBXVEYK
KyAgICByZXN1bHROcyArPSBJbnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5t
aWNyb3NlY29uZHMoKSkgfSAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZDsKKyAgICByZXN1
bHROcyArPSBJbnQxMjggeyBzdGF0aWNfY2FzdDxpbnQ2NF90PihkdXJhdGlvbi5uYW5vc2Vjb25k
cygpKSB9OworCisgICAgRXhhY3RUaW1lIHJlc3VsdCB7IHJlc3VsdE5zIH07CisgICAgaWYgKCFy
ZXN1bHQuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0ludDEyOCBFeGFjdFRpbWU6OnJvdW5kKEludDEyOCBxdWFudGl0eSwg
dW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5k
aW5nTW9kZSkKK3sKKyAgICBJbnQxMjggaW5jcmVtZW50TnMgeyBpbmNyZW1lbnQgfTsKKyAgICBz
d2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogaW5jcmVtZW50TnMg
Kj0gRXhhY3RUaW1lOjpuc1BlckhvdXI7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpN
aW51dGU6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaW51dGU7IGJyZWFrOworICAg
IGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQ
ZXJTZWNvbmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogaW5j
cmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pbGxpc2Vjb25kOyBicmVhazsKKyAgICBjYXNl
IFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQ
ZXJNaWNyb3NlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICByZXR1cm4gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50
TnMsIHJvdW5kaW5nTW9kZSk7Cit9CisKKy8vIERpZmZlcmVuY2VJbnN0YW50ICggbnMxLCBuczIs
IHJvdW5kaW5nSW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1kaWZmZXJlbmNlaW5z
dGFudAorSW50MTI4IEV4YWN0VGltZTo6ZGlmZmVyZW5jZShFeGFjdFRpbWUgb3RoZXIsIHVuc2ln
bmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01v
ZGUpIGNvbnN0Cit7CisgICAgSW50MTI4IGRpZmYgPSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHMg
LSBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAgcmV0dXJuIHJvdW5kKGRpZmYsIGluY3JlbWVudCwg
dW5pdCwgcm91bmRpbmdNb2RlKTsKK30KKworRXhhY3RUaW1lIEV4YWN0VGltZTo6cm91bmQodW5z
aWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5n
TW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gRXhhY3RUaW1lIHsgcm91bmQobV9lcG9jaE5hbm9z
ZWNvbmRzLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSkgfTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JU084NjAxLmgKaW5kZXggZThmZTI4MjFlZjg2N2IyOTY0OGEyYzQyMGI0MzEwNmFmMzQx
OWNkYy4uYTUzMGQwMjgxNTI0NTMwNWUyYWY0Y2JlYmM3Nzk3ZTgzMWM1NGU0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBJU084NjAxIHsK
QEAgLTc5LDYgKzgwLDEyMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCBudW1i
ZXJPZlRlbXBvcmFsVW5pdHM+IG1fZGF0YSB7IH07CiB9OwogCitjbGFzcyBFeGFjdFRpbWUgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEV4YWN0VGltZSk7CitwdWJsaWM6CisgICAgY29u
c3RleHByIEV4YWN0VGltZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgRXhhY3RUaW1lKGNv
bnN0IEV4YWN0VGltZSYpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQgRXhhY3RU
aW1lKEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKSA6IG1fZXBvY2hOYW5vc2Vjb25kcyhlcG9jaE5h
bm9zZWNvbmRzKSB7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RUaW1lIGZyb21FcG9j
aFNlY29uZHMoaW50NjRfdCBlcG9jaFNlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhh
Y3RUaW1lKEludDEyOCB7IGVwb2NoU2Vjb25kcyB9ICogRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7
CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RUaW1lIGZyb21FcG9jaE1pbGxpc2Vj
b25kcyhpbnQ2NF90IGVwb2NoTWlsbGlzZWNvbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4
YWN0VGltZShJbnQxMjggeyBlcG9jaE1pbGxpc2Vjb25kcyB9ICogRXhhY3RUaW1lOjpuc1Blck1p
bGxpc2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVw
b2NoTWljcm9zZWNvbmRzKGludDY0X3QgZXBvY2hNaWNyb3NlY29uZHMpCisgICAgeworICAgICAg
ICByZXR1cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoTWljcm9zZWNvbmRzIH0gKiBFeGFjdFRp
bWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgRXhhY3RUaW1lIGZyb21J
U09QYXJ0c0FuZE9mZnNldChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2ln
bmVkIGgsIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1p
Y3JvcywgdW5zaWduZWQgbnMsIGludDY0X3Qgb2Zmc2V0KTsKKworICAgIGNvbnN0ZXhwciBpbnQ2
NF90IGVwb2NoU2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgp
KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25k
cyAvIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgaW50NjRf
dCBlcG9jaE1pbGxpc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vj
b25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhw
ciBpbnQ2NF90IGVwb2NoTWljcm9zZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9lcG9j
aE5hbm9zZWNvbmRzIC8gRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsKKyAgICB9CisgICAg
Y29uc3RleHByIEludDEyOCBlcG9jaE5hbm9zZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzOwor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBpbnQgbmFub3NlY29uZHNGcmFjdGlvbigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtX2Vwb2NoTmFub3NlY29uZHMg
JSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisKKyAgICBTdHJpbmcgYXNTdHJpbmco
KSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBp
ZiAobV9lcG9jaE5hbm9zZWNvbmRzIDwgMCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Jy0nKTsKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCAtbV9lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhc1N0cmluZ0ltcGwoYnVpbGRlciwg
bV9lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
KyAgICB9CisKKyAgICAvLyBJc1ZhbGlkRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29u
ZHMgKQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLWlzdmFsaWRlcG9jaG5hbm9zZWNvbmRzCisgICAgY29uc3RleHByIGJvb2wgaXNWYWxpZCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID49IEV4YWN0
VGltZTo6bWluVmFsdWUgJiYgbV9lcG9jaE5hbm9zZWNvbmRzIDw9IEV4YWN0VGltZTo6bWF4VmFs
dWU7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KEV4YWN0VGltZSBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPCBvdGhl
ci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PD0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hO
YW5vc2Vjb25kcyA8PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA9PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7
CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oRXhhY3RUaW1lIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyAhPSBvdGhlci5t
X2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0o
RXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5v
c2Vjb25kcyA+PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPihFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID4gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAg
IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBhZGQoRHVyYXRpb24pIGNvbnN0Owor
ICAgIEludDEyOCBkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwgdW5zaWduZWQgaW5jcmVtZW50
LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CisgICAgRXhhY3RUaW1lIHJvdW5k
KHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IGRheVJhbmdlU2Vjb25kcyB7
IDg2NDAwJzAwMDAwMDAwIH07IC8vIDFlOCBkYXlzCisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQx
MjggbnNQZXJNaWNyb3NlY29uZCB7IDEwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEy
OCBuc1Blck1pbGxpc2Vjb25kIHsgMScwMDAnMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBJ
bnQxMjggbnNQZXJTZWNvbmQgeyAxJzAwMCcwMDAnMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBJbnQxMjggbnNQZXJNaW51dGUgPSBuc1BlclNlY29uZCAqIDYwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgSW50MTI4IG5zUGVySG91ciA9IG5zUGVyTWludXRlICogNjA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBJbnQxMjggbWluVmFsdWUgPSAtZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbWF4VmFsdWUgPSBkYXlSYW5nZVNlY29uZHMg
KiBuc1BlclNlY29uZDsKKworICAgIHN0YXRpYyB2b2lkIGFzU3RyaW5nSW1wbChTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBJbnQxMjggdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPiA5
KQorICAgICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIHZhbHVlIC8gMTApOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUgJSAxMCkgKyAnMCcp
OworICAgIH0KKworICAgIHN0YXRpYyBJbnQxMjggcm91bmQoSW50MTI4IHF1YW50aXR5LCB1bnNp
Z25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKTsKKworICAgIEludDEy
OCBtX2Vwb2NoTmFub3NlY29uZHMgeyB9OworfTsKKwogY2xhc3MgUGxhaW5UaW1lIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUpOwogcHVibGljOgpAQCAtMTY4LDUgKzI4
NSw3IEBAIFN0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUsIHN0ZDo6dHVwbGU8
UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uCiAKIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNv
bnN0IER1cmF0aW9uJik7CiAKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBwYXJzZUluc3RhbnQo
U3RyaW5nVmlldyk7CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuaAppbmRleCBhNTA5ZDkyZDYzZTk1YmVmMDA2MjBhMzA2YTNhNTVmMDRhNjU2MzgyLi5jMTdk
N2U3NDIxZDE5ZTkwNTRmNTY5M2U3MDhkMWEyZmY1ODRiMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtOTQsNiArOTQs
OCBAQCBwcml2YXRlOgogCiAgICAgVURhdGVJbnRlcnZhbEZvcm1hdCogY3JlYXRlRGF0ZUludGVy
dmFsRm9ybWF0SWZOZWNlc3NhcnkoSlNHbG9iYWxPYmplY3QqKTsKIAorICAgIHN0YXRpYyBkb3Vi
bGUgaGFuZGxlRGF0ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCiAgICAg
ZW51bSBjbGFzcyBXZWVrZGF5IDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcg
fTsKICAgICBlbnVtIGNsYXNzIEVyYSA6IHVpbnQ4X3QgeyBOb25lLCBOYXJyb3csIFNob3J0LCBM
b25nIH07CiAgICAgZW51bSBjbGFzcyBZZWFyIDogdWludDhfdCB7IE5vbmUsIFR3b0RpZ2l0LCBO
dW1lcmljIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCA3NTg0Y2YwY2ZiMTI5ZWJj
ZjhhYmY0NTNmM2ViZWFmNGI5NzFjZjNiLi42ZTRkNjI1YzUwMmYyMGM0M2JmOWQ2MzhhMmViM2E4
MmY4MmMzMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFs
SW5zdGFudC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTkwLDYgKzkxLDI3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKKy8vIEhhbmRsZURhdGVUaW1lVmFs
dWUgKCBkYXRlVGltZUZvcm1hdCwgeCApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1oYW5kbGVkYXRldGltZXZhbHVlCitkb3VibGUgSW50bERhdGVU
aW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgeCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHguaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkYXRlTm93SW1wbCgp
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOworCisgICAgLy8gRklYTUU6CisgICAgLy8gIC0gQWRk
IGFsbCBvZiB0aGUgb3RoZXIgVGVtcG9yYWwgdHlwZXMKKyAgICAvLyAgLSBXb3JrIGluIGVwb2No
IG5hbm9zZWNvbmRzCisgICAgLy8gIC0gUmV0dXJuIFVEYXRlRm9ybWF0IGFuZCBVRGF0ZUludGVy
dmFsRm9ybWF0IGRlcGVuZGluZyBvbiB0aGUgdHlwZQorICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIHgpOworICAgIGlmIChp
bnN0YW50KQorICAgICAgICByZXR1cm4gaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNl
Y29uZHMoKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgV1RGOjp0aW1lQ2xpcCh4
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpKTsKK30KKwogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xMDAsMTQgKzEyMiw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2JhbE9iamVj
dCoKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChk
YXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUpKSk7CiB9CkBAIC0xNTYsMTQgKzE3Miw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xv
YmFsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFs
dWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVO
b3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFs
dWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAg
ICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRp
bWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkpKTsKIH0KQEAgLTE4
NSw5ICsxOTUsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCAoSlNHbG9iYWxPYgogICAgIGlmIChzdGFydERhdGVW
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRl
IG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBz
dGFydERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERh
dGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0
LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
LSAgICBkb3VibGUgZW5kRGF0ZSA9IGVuZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgIGRvdWJsZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGlt
ZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBp
cyBsYXJnZXIgdGhhbiBlbmREYXRlIl9zKTsKQEAgLTIxMiw5ICsyMjIsOSBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdl
VG9QYXJ0cywgKEpTRwogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVu
ZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVk
Il9zKTsKIAotICAgIGRvdWJsZSBzdGFydERhdGUgPSBzdGFydERhdGVWYWx1ZS50b051bWJlcihn
bG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBkb3VibGUgZW5kRGF0ZSA9IGVu
ZERhdGVWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIGRvdWJsZSBlbmREYXRlID0g
SW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5k
RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlm
IChzdGFydERhdGUgPiBlbmREYXRlKQogICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhhbiBlbmREYXRlIl9z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAxNzRi
MGY4YWU3ZmVkYmIzMjQzZjQ0YWVkZTU0MzBjYmYyZjI0MWIyLi40YjU5NmMyN2E2YjM0YTIxYjk5
NDk3YzE0NzlmY2Y3NjhkNTA4MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5j
bHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMjMxLDYgKzIzMiw2MiBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0
ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRfdCB2YWx1ZSkKICAgICBy
ZXR1cm4gY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZFZhbHVlLCBzaWduKTsK
IH0KIAorSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEludDEyOCB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVaZXJvKGds
b2JhbE9iamVjdCkpOworCisgICAgVUludDEyOCB1bnNpZ25lZFZhbHVlOworICAgIGJvb2wgc2ln
biA9IGZhbHNlOworICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9
IHN0YXRpY19jYXN0PFVJbnQxMjg+KC0odmFsdWUgKyAxKSkgKyAxOworICAgICAgICBzaWduID0g
dHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5zaWduZWRWYWx1ZSA9IHZhbHVlOworCisgICAg
aWYgKHVuc2lnbmVkVmFsdWUgPD0gVUlOVDY0X01BWCkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBjcmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih1bnNpZ25lZFZhbHVlKSwgc2lnbikpOworCisgICAgaWYgY29uc3RleHByIChzaXplb2Yo
RGlnaXQpID09IDgpIHsKKyAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5n
dGgoZ2xvYmFsT2JqZWN0LCAyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisKKyAgICAgICAgRGlnaXQgbG93Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSkpOworICAgICAgICBEaWdpdCBoaWdo
Qml0cyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworCisgICAgICAgIEFTU0VSVChoaWdoQml0cyk7CisKKyAgICAgICAgYmln
SW50LT5zZXREaWdpdCgwLCBsb3dCaXRzKTsKKyAgICAgICAgYmlnSW50LT5zZXREaWdpdCgxLCBo
aWdoQml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICB9CisKKyAgICBBU1NFUlQoc2l6ZW9mKERpZ2l0KSA9PSA0KTsKKworICAg
IERpZ2l0IGRpZ2l0MCA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4o
dW5zaWduZWRWYWx1ZSkpOworICAgIERpZ2l0IGRpZ2l0MSA9IHN0YXRpY19jYXN0PERpZ2l0Pihz
dGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiAzMikpOworICAgIERpZ2l0IGRp
Z2l0MiA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRW
YWx1ZSA+PiA2NCkpOworICAgIERpZ2l0IGRpZ2l0MyA9IHN0YXRpY19jYXN0PERpZ2l0PihzdGF0
aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSA+PiA5NikpOworCisgICAgQVNTRVJUKGRp
Z2l0MiB8fCBkaWdpdDMpOworCisgICAgaW50IGxlbmd0aCA9IGRpZ2l0MyA/IDQgOiAzOworICAg
IEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgbGVuZ3Ro
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGJpZ0lu
dC0+c2V0RGlnaXQoMCwgZGlnaXQwKTsKKyAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGRpZ2l0MSk7
CisgICAgYmlnSW50LT5zZXREaWdpdCgyLCBkaWdpdDIpOworICAgIGlmIChkaWdpdDMpCisgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMywgZGlnaXQzKTsKKyAgICBiaWdJbnQtPnNldFNpZ24oc2ln
bik7CisgICAgcmV0dXJuIGJpZ0ludDsKK30KKwogSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVG
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgdmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmgKaW5kZXggODk2MWMxZDhmYjYxMDFhYjY4ZDk3MGYwMmI3MWVkY2IzMzRkZmQ3OC4u
ODhmM2MzOTAzOTkxMjJlMjM3YWUyYTE4NjExNjMzYjZkYTY3OTRjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NhZ2Vk
VW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03NCw2ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCB2
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9t
KEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCB2YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgdmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShK
U0dsb2JhbE9iamVjdCosIEludDEyOCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVh
dGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCB2YWx1ZSk7CiAgICAgc3RhdGljIEpTQmlnSW50
KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKTsKIApAQCAtNjA1LDgg
KzYwNyw2IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDY0
X3QgdG9CaWdVSW50NjRIZWFwKEpTQmlnSW50Kik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VaW50NjRIZWFwKEpTQmlnSW50Kik7Ci0K
ICAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBvZmZzZXRPZkRhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0JpZ0ludCwgbV9kYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZGFlOWIzYTliYzkyZmJhZmQ0
ZTMwMTk0YjRkMWE4ZDgzZGJkMmNmZi4uNTIxOWY4ZjcyNDJiODZmOTQwZTgyODIzNTg0ZTYxZmUy
YmE0OWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRl
TWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5j
cHAKQEAgLTI2OSwxMSArMjY5LDYgQEAgTG9jYWxUaW1lT2Zmc2V0IERhdGVDYWNoZTo6bG9jYWxU
aW1lT2Zmc2V0KGRvdWJsZSBtaWxsaXNlY29uZHNGcm9tRXBvY2gsIFdURjo6VGkKICAgICByZXR1
cm4gb2Zmc2V0OwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB0aW1lVG9NUyhkb3VibGUgaG91
ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQotewotICAgIHJldHVybiAoKCho
b3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQZXJNaW51dGUg
KyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKLX0KLQogZG91YmxlIERhdGVDYWNoZTo6
Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3VibGUg
bWlsbGlzZWNvbmRzLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CiAgICAgZG91Ymxl
IGRheSA9IGRhdGVUb0RheXNGcm9tMTk3MCh0LnllYXIoKSwgdC5tb250aCgpLCB0Lm1vbnRoRGF5
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGUwY2ViNGJlMDIzMTUwY2U1YTk0ZGI4YTg4YmNkNmQxYzBmZWVlMzQuLjEzZjVh
Nzk1YWNiMjExMDg1ZDM1ZTA5Zjc2NzQ4MDllNjczOWYxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNyw2ICsyMDcsOCBA
QAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgpA
QCAtMTI0NCw2ICsxMjQ2LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAg
ICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisg
ICAgICAgIG1faW5zdGFudFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQ
cm90b3R5cGUgPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBp
bml0LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIGluc3RhbnRQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1f
cGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0
aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTM4LDYg
KzIxNDcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9pbnN0YW50U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IGUwNmE1YWIyZDRiMGY0OTYzNjcyMWVmZjFjY2RmZWExYmJjNmQ4MjMuLjdmNDY3
ZGFhYjAwMTkyMzA5OGM2MjEzYTNiMThkZTZhM2I0ZTgwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzMxLDYgKzMzMSw3IEBAIHB1
YmxpYzoKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2Nh
bGVuZGFyU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2luc3RhbnRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCkBA
IC04ODQsNiArODg1LDcgQEAgcHVibGljOgogCiAgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4g
bV9pbnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGxhaW5UaW1l
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggOTM0YmViMDlhNzBiNzZmZmEyZWM4OTM1Y2E4
NzhkMjBmYzg5ZjY2Zi4uMjliMzU0NjZkOThlZmY5ZjY0ZmQwOTc5ZGM5MDA3NDFiZGZhN2ExNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
bi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTE2NCw2ICsxNjUsMzEgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJh
dGlvbjo6dG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBy
ZXR1cm4gVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9u
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKKy8vIFRvTGltaXRlZFRlbXBvcmFs
RHVyYXRpb24gKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgZGlzYWxsb3dlZEZpZWxkcyApCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b2xpbWl0ZWR0
ZW1wb3JhbGR1cmF0aW9uCitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjp0b0xp
bWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1W
YWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZFVuaXRz
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlv
biA9IHRvSVNPODYwMUR1cmF0aW9uKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFpc1ZhbGlkRHVyYXRpb24o
ZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29u
c2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBmb3Ig
KFRlbXBvcmFsVW5pdCB1bml0IDogZGlzYWxsb3dlZFVuaXRzKSB7CisgICAgICAgIGlmIChkdXJh
dGlvblt1bml0XSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIG1ha2VTdHJpbmcoIkFkZGluZyAiX3MsIHRlbXBvcmFsVW5pdFBsdXJhbFByb3BlcnR5
TmFtZSh2bSwgdW5pdCkucHVibGljTmFtZSgpLCAiIG5vdCBzdXBwb3J0ZWQgYnkgVGVtcG9yYWwu
SW5zdGFudC4gVHJ5IFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUgaW5zdGVhZCJfcykpOworICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkdXJhdGlv
bjsKK30KKwogVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggODJmMmQ1ZDY1YzIyYWM0YzQwN2M4NjM0MzQyZmY2
NjljYTBhMTg5Ni4uZDI3NzIwOWNkZGQ3NzViMTE1ZDE3ZDFlMWNlZmMxNDI3N2Q0ODA5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaApA
QCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3RhdGlj
IFRlbXBvcmFsRHVyYXRpb24qIHRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworICAgIHN0YXRpYyBJU084NjAxOjpEdXJhdGlvbiB0b0xpbWl0ZWREdXJhdGlvbihK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVu
aXQ+IGRpc2FsbG93ZWRVbml0cyk7CiAgICAgc3RhdGljIFRlbXBvcmFsRHVyYXRpb24qIGZyb20o
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNTFmMjA4
OWI0ZjNhOGM1ZmRhOWQ1MmRhMmYxZWYzM2Q4OTY5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwCkBAIC0wLDAgKzEs
NDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0
aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFRp
bWVab25lLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJ
bnN0YW50OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudCkgfTsKKworU3RydWN0dXJl
KiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxJbnN0YW50OjpUZW1w
b3JhbEluc3RhbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RXhhY3RU
aW1lIGV4YWN0VGltZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fZXhhY3RU
aW1lKGV4YWN0VGltZSkKK3sKK30KKworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpFeGFjdFRpbWUg
ZXhhY3RUaW1lKQoreworICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICBhdXRv
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnQ+KHZt
LmhlYXApKSBUZW1wb3JhbEluc3RhbnQodm0sIHN0cnVjdHVyZSwgZXhhY3RUaW1lKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCisvLyBD
cmVhdGVUZW1wb3JhbEluc3RhbnQgKCBlcG9jaE5hbm9zZWNvbmRzIFsgLCBuZXdUYXJnZXQgXSAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jcmVh
dGV0ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlD
cmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkV4YWN0
VGltZSBleGFjdFRpbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZXhhY3RUaW1lLmFzU3RyaW5n
KCksICIgZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9y
IFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2Jq
ZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisKK1RlbXBvcmFsSW5zdGFu
dCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTmFub3NlY29uZHMgPSB2YWx1ZS50b0Jp
Z0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTmFub3NlY29uZHMp
OworI2lmIFVTRShCSUdJTlQzMikKKyAgICBJbnQxMjggZDAgeyBiaWdpbnQtPmxlbmd0aCgpID4g
MCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwIH07CisgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5n
dGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEpIDogMCB9OworICAgIEludDEyOCBkMiB7IGJpZ2lu
dC0+bGVuZ3RoKCkgPiAyID8gYmlnaW50LT5kaWdpdCgyKSA6IDAgfTsKKyAgICBJbnQxMjggdG90
YWwgeyBkMiA8PCA2NCB8IGQxIDw8IDMyIHwgZDAgfTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcg
PSBiaWdpbnQtPmxlbmd0aCgpID4gMzsKKyNlbHNlCisgICAgSW50MTI4IGxvdyB7IGJpZ2ludC0+
bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAgICBJbnQxMjggaGlnaCB7
IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICBJbnQx
MjggdG90YWwgeyBoaWdoIDw8IDY0IHwgbG93IH07CisgICAgYm9vbCBiaWdJbnRUb29Mb25nID0g
YmlnaW50LT5sZW5ndGgoKSA+IDI7CisjZW5kaWYKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhh
Y3RUaW1lIHsgdG90YWwgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6IDEpIH07CisKKyAgICBpZiAo
YmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcg
YXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOworICAgICAg
ICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9z
OworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2ggbmFu
b3NlY29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5J
bnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVy
biBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFu
dFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1RlbXBvcmFsSW5zdGFudCAoIGl0
ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
dG90ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0b0lu
c3RhbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9y
YWxJbnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
aXRlbVZhbHVlKTsKKworICAgIC8vIEZJWE1FOiB3aGVuIFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUg
bGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsWm9uZWREYXRlVGlt
ZT4odm0pKQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFpvbmVkRGF0ZVRp
bWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBTdHJpbmcgc3RyaW5nID0gaXRl
bVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEV4YWN0VGltZSA9IElTTzg2MDE6
OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2VkRXhhY3RUaW1lKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCInIl9z
LCBlbGxpcHNpemVBdCgxMDAsIHN0cmluZyksICInIGlzIG5vdCBhIHZhbGlkIFRlbXBvcmFsLklu
c3RhbnQgc3RyaW5nIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3Qs
IHBhcnNlZEV4YWN0VGltZS52YWx1ZSgpKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJv
bSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwuaW5zdGFudC5mcm9tCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJv
bShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVy
aXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKSB7CisgICAgICAgIElTTzg2MDE6OkV4YWN0VGltZSBl
eGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRlbVZhbHVlKS0+ZXhhY3RUaW1l
KCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorCisgICAgcmV0dXJu
IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7Cit9CisKKy8vIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVwb2NoU2Vjb25kcyApCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaHNlY29u
ZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hTZWNvbmRzVmFsdWUpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaFNlY29uZHMgPSBlcG9jaFNl
Y29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVtYmVyVG9CaWdJbnQgc3RlcCAxCisgICAg
aWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaFNlY29uZHMsICIgaXMgbm90IGEg
dmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggc2Vjb25kcyJfcykpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0g
SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hTZWNvbmRzKGVwb2NoU2Vjb25kcyk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
ZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNv
bmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWxsaXNlY29uZHMKK1RlbXBv
cmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgZXBvY2hNaWxsaXNlY29uZHMgPSBl
cG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBz
dGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vjb25kcykpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZXBvY2hNaWxs
aXNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggbWlsbGlz
ZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1p
bGxpc2Vjb25kcyhlcG9jaE1pbGxpc2Vjb25kcyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8v
IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzICggZXBvY2hNaWNyb3NlY29u
ZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
aW5zdGFudC5mcm9tZXBvY2htaWNyb3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJ
bnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzID0gZXBvY2hNaWNyb3NlY29uZHNWYWx1
ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE1p
Y3Jvc2Vjb25kcyk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGJvb2wgYmlnSW50VG9vTG9uZyA9
IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworI2Vsc2UKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBi
aWdpbnQtPmxlbmd0aCgpID4gMTsKKyNlbmRpZgorICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFj
dFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0JpZ0lu
dDo6dG9CaWdVSW50NjQoYmlnaW50KSk7CisKKyAgICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhh
Y3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQt
PnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBh
cmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBz
aXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2ggbWljcm9zZWNvbmRzIGlzIG91dHNpZGUg
b2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzICggZXBvY2hOYW5vc2Vjb25kcyApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9j
aG5hbm9zZWNvbmRzCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2No
TmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE5h
bm9zZWNvbmRzVmFsdWUpCit7CisgICAgcmV0dXJuIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2Jq
ZWN0LCBlcG9jaE5hbm9zZWNvbmRzVmFsdWUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LmNv
bXBhcmUgKCBvbmUsIHR3byApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC5pbnN0YW50LmNvbXBhcmUKK0pTVmFsdWUgVGVtcG9yYWxJbnN0YW50Ojpj
b21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb25lVmFsdWUsIEpT
VmFsdWUgdHdvVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5z
dGFudCogb25lID0gdG9JbnN0YW50KGdsb2JhbE9iamVjdCwgb25lVmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIHR3byA9
IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIHR3b1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKG9uZS0+ZXhhY3RUaW1lKCkgPiB0d28tPmV4YWN0
VGltZSgpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoMSk7CisgICAgaWYgKG9uZS0+ZXhhY3RU
aW1lKCkgPCB0d28tPmV4YWN0VGltZSgpKQorICAgICAgICByZXR1cm4ganNOdW1iZXIoLTEpOwor
ICAgIHJldHVybiBqc051bWJlcigwKTsKK30KKworSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxJ
bnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFs
SW5zdGFudCogb3RoZXIsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0
KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGds
b2JhbE9iamVjdCwgb3B0aW9ucywgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9v
cihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgVGVtcG9yYWxVbml0IGRlZmF1bHRM
YXJnZXN0VW5pdCA9IHN0ZDo6bWluKHNtYWxsZXN0VW5pdCwgVGVtcG9yYWxVbml0OjpTZWNvbmQp
OworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBvcmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB7IH0sIGRlZmF1bHRMYXJnZXN0VW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZh
bHVlX29yKGRlZmF1bHRMYXJnZXN0VW5pdCk7CisKKyAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2Vz
dCAmJiBzbWFsbGVzdCA8IGxhcmdlc3QpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2Vz
dFVuaXQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFJvdW5kaW5nTW9k
ZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4SW5jcmVtZW50ID0gbWF4aW11
bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCk7CisgICAgQVNTRVJUKG1heEluY3JlbWVu
dCAmJiAqbWF4SW5jcmVtZW50IDw9IDEwMDApOyAvLyB1bmJvdW5kZWQgaW5jcmVtZW50cyBhcmUg
aW1wb3NzaWJsZSB3aXRoIFRlbXBvcmFsLkluc3RhbnQKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQg
PSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4SW5j
cmVtZW50LCBmYWxzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIEludDEyOCByb3VuZGVkRGlmZiA9IGV4YWN0VGltZSgpLmRpZmZlcmVuY2Uob3RoZXItPmV4
YWN0VGltZSgpLCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICAv
LyBOT1RFOiBEdXJhdGlvbiBmaWVsZHMgYXJlIGN1cnJlbnRseSBkb3VibGVzLCBhbmQgdGhlIHRv
dGFsIG51bWJlciBvZgorICAgIC8vIG5hbm9zZWNvbmRzIG1heSBub3QgZml0IGluIGEgZG91Ymxl
LiBUaGlzIG1heSBuZWVkIHRvIGNoYW5nZSBpZiB0aGUKKyAgICAvLyBpbnRlcm5hbCByZXByZXNl
bnRhdGlvbiBvZiBEdXJhdGlvbiBjaGFuZ2VzLgorICAgIEFTU0VSVChyb3VuZGVkRGlmZiAvIDEn
MDAwJzAwMCcwMDAgPCBJTlQ2NF9NQVgpOworICAgIGRvdWJsZSBzZWNvbmRzIHsgc3RhdGljX2Nh
c3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2NF90Pihyb3VuZGVkRGlmZiAvIDEnMDAwJzAwMCcw
MDApKSB9OworICAgIGRvdWJsZSBuYW5vc2Vjb25kc1JlbWFpbmRlciB7IHN0YXRpY19jYXN0PGRv
dWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYgJSAxJzAwMCcwMDAnMDAwKSkg
fTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgeyAwLCAwLCAwLCAwLCAwLCAwLCBzZWNv
bmRzLCAwLCAwLCBuYW5vc2Vjb25kc1JlbWFpbmRlciB9OworCisgICAgVGVtcG9yYWxEdXJhdGlv
bjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitzdGF0aWMgZG91YmxlIG1heGltdW1JbmNyZW1lbnQoVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5p
dCkKK3sKKyAgICBzd2l0Y2ggKHNtYWxsZXN0VW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpIb3VyOiByZXR1cm4gMjQ7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogcmV0dXJu
IDE0NDA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogcmV0dXJuIDg2NDAwOworICAg
IGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogcmV0dXJuIDguNjRlNzsKKyAgICBjYXNl
IFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHJldHVybiA4LjY0ZTEwOworICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpOYW5vc2Vjb25kOiByZXR1cm4gOC42NGUxMzsKKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6WWVhcjoKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TW9udGg6CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6OldlZWs6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkRheToKKyAgICBkZWZhdWx0
OgorICAgICAgICB7IH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworSVNPODYwMTo6RXhhY3RUaW1lIFRlbXBvcmFsSW5zdGFudDo6cm91bmQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNP
YmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVu
aXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxV
bml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFzbWFsbGVzdCkg
eworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBy
b3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1
ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5k
aW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91
bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgZG91YmxlIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhpbXVtSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIHRy
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4g
ZXhhY3RUaW1lKCkucm91bmQoaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7
Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nKCBbIG9wdGlvbnMg
XSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5p
bnN0YW50LnByb3RvdHlwZS50b3N0cmluZworU3RyaW5nIFRlbXBvcmFsSW5zdGFudDo6dG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNv
bnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50
bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAg
IHJldHVybiB0b1N0cmluZygpOworCisgICAgSlNPYmplY3QqIHRpbWVab25lID0gbnVsbHB0cjsK
KyAgICBKU1ZhbHVlIHRpbWVab25lVmFsdWUgPSBvcHRpb25zLT5nZXQoZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9uZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICBpZiAoIXRpbWVab25lVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICB0aW1lWm9uZSA9IFRlbXBvcmFsVGltZVpvbmU6OmZyb20oZ2xvYmFsT2JqZWN0LCB0aW1lWm9u
ZVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9
CisKKyAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcg
b2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCisgICAgaWYgKHN0ZDo6
Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNpb246OkF1dG8gJiYgcm91bmRpbmdNb2Rl
ID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCisgICAgICAgIHJldHVybiB0b1N0cmluZyh0aW1lWm9u
ZSk7CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgbmV3RXhhY3RUaW1lIHsgZXhhY3RUaW1lKCku
cm91bmQoZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlKSB9OworCisgICAg
Ly8gRklYTUU6IE1pc3NpbmcsIHJlbGllcyBvbiBUaW1lWm9uZToKKyAgICAvLyAxLiBMZXQgcm91
bmRlZEluc3RhbnQgYmUgISBDcmVhdGVUZW1wb3JhbEluc3RhbnQocm91bmRlZE5zKS4KKyAgICAv
LyAuLi4KKyAgICAvLyAxLiBJZiBfb3V0cHV0VGltZVpvbmVfIGlzICp1bmRlZmluZWQqLCB0aGVu
CisgICAgLy8gICAxLiBTZXQgX291dHB1dFRpbWVab25lXyB0byAhIENyZWF0ZVRlbXBvcmFsVGlt
ZVpvbmUoKiJVVEMiKikuCisgICAgLy8gMS4gTGV0IF9pc29DYWxlbmRhcl8gYmUgISBHZXRJU084
NjAxQ2FsZW5kYXIoKS4KKyAgICAvLyAxLiBMZXQgX2RhdGVUaW1lXyBiZSA/IEJ1aWx0aW5UaW1l
Wm9uZUdldFBsYWluRGF0ZVRpbWVGb3IoX291dHB1dFRpbWVab25lXywgX2luc3RhbnRfLCBfaXNv
Q2FsZW5kYXJfKS4KKyAgICBKU09iamVjdCogb3V0cHV0VGltZVpvbmUgPSB0aW1lWm9uZTsKKyAg
ICBpZiAob3V0cHV0VGltZVpvbmUpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGSVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBu
b3QgaW1wbGVtZW50ZWQgeWV0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdG9TdHJpbmcobmV3RXhhY3RUaW1lLCB0aW1lWm9uZSwgZGF0YSk7Cit9CisKKy8v
IFRlbXBvcmFsSW5zdGFudFRvU3RyaW5nICggaW5zdGFudCwgdGltZVpvbmUsIHByZWNpc2lvbiAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10ZW1w
b3JhbGluc3RhbnR0b3N0cmluZworU3RyaW5nIFRlbXBvcmFsSW5zdGFudDo6dG9TdHJpbmcoSVNP
ODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSwgSlNPYmplY3QqIHRpbWVab25lLCBQcmVjaXNpb25E
YXRhIHByZWNpc2lvbikKK3sKKyAgICBHcmVnb3JpYW5EYXRlVGltZSBncmVnb3JpYW5EYXRlVGlt
ZSB7IHN0YXRpY19jYXN0PGRvdWJsZT4oZXhhY3RUaW1lLmVwb2NoTWlsbGlzZWNvbmRzKCkpLCBM
b2NhbFRpbWVPZmZzZXQgeyB9IH07CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAg
Ly8gSWYgdGhlIHllYXIgaXMgb3V0c2lkZSB0aGUgYm91bmRzIG9mIDEwMDAgYW5kIDk5OTkgaW5j
bHVzaXZlIHdlIHdhbnQgdG8KKyAgICAvLyB1c2UgdGhlIGV4dGVuZGVkIHllYXIgZm9ybWF0IChQ
YWRJU09ZZWFyKS4KKyAgICB1bnNpZ25lZCB5ZWFyTGVuZ3RoID0gNDsKKyAgICBpZiAoZ3JlZ29y
aWFuRGF0ZVRpbWUueWVhcigpID4gOTk5OSB8fCBncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPCAx
MDAwKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA8
IDAgPyAnLScgOiAnKycpOworICAgICAgICB5ZWFyTGVuZ3RoID0gNjsKKyAgICB9CisKKyAgICBi
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHBhZCgnMCcsIHllYXJMZW5ndGgsIHN0ZDo6YWJzKGdy
ZWdvcmlhbkRhdGVUaW1lLnllYXIoKSkpLAorICAgICAgICAnLScsIHBhZCgnMCcsIDIsIGdyZWdv
cmlhbkRhdGVUaW1lLm1vbnRoKCkgKyAxKSwKKyAgICAgICAgJy0nLCBwYWQoJzAnLCAyLCBncmVn
b3JpYW5EYXRlVGltZS5tb250aERheSgpKSwKKyAgICAgICAgJ1QnLCBwYWQoJzAnLCAyLCBncmVn
b3JpYW5EYXRlVGltZS5ob3VyKCkpLAorICAgICAgICAnOicsIHBhZCgnMCcsIDIsIGdyZWdvcmlh
bkRhdGVUaW1lLm1pbnV0ZSgpKSkpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbnNQZXJT
ZWNvbmQgeyAxJzAwMCcwMDAnMDAwIH07CisgICAgaW50IGZyYWN0aW9uIHsgZXhhY3RUaW1lLm5h
bm9zZWNvbmRzRnJhY3Rpb24oKSB9OworICAgIGlmIChmcmFjdGlvbiA8IDApCisgICAgICAgIGZy
YWN0aW9uICs9IG5zUGVyU2Vjb25kOworCisgICAgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoYnVp
bGRlciwgZ3JlZ29yaWFuRGF0ZVRpbWUuc2Vjb25kKCksIGZyYWN0aW9uLCBwcmVjaXNpb24pOwor
CisgICAgaWYgKHRpbWVab25lKSB7CisgICAgICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMg
b24gVGltZVpvbmU6CisgICAgICAgIC8vICAgMS4gTGV0IF90aW1lWm9uZVN0cmluZ18gYmUgPyBC
dWlsdGluVGltZVpvbmVHZXRPZmZzZXRTdHJpbmdGb3IoX3RpbWVab25lXywgX2luc3RhbnRfKS4K
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1onKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJ1onKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbEluc3RhbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGRmYTJmOThmMDkzN2M3ZWZhM2FkNDA1NmMzOWJh
MTI2YTM5YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50LmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IklTTzg2MDEuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlZNLmgiCisj
aW5jbHVkZSA8d3RmL1BhY2tlZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9y
YWxJbnN0YW50IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0udGVtcG9yYWxJbnN0
YW50U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpFeGFjdFRpbWUpOworICAgIHN0YXRpYyBU
ZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBJU084NjAx
OjpFeGFjdFRpbWUsIFN0cnVjdHVyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJ
bnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgU3RydWN0
dXJlKiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoU2Vjb25kcyhK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZy
b21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRp
YyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaE5hbm9zZWNv
bmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgY29tcGFy
ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOworCisgICAgSVNPODYwMTo6RXhh
Y3RUaW1lIGV4YWN0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhhY3RUaW1lLmdldCgpOyB9CisK
KyAgICBJU084NjAxOjpEdXJhdGlvbiBkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiwgVGVtcG9y
YWxJbnN0YW50KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpFeGFjdFRp
bWUgcm91bmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0
cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7Cisg
ICAgU3RyaW5nIHRvU3RyaW5nKEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHIsIFByZWNpc2lv
bkRhdGEgcHJlY2lzaW9uID0geyB7IFByZWNpc2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6
Ok5hbm9zZWNvbmQsIDEgfSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0b1N0cmluZyhl
eGFjdFRpbWUoKSwgdGltZVpvbmUsIHByZWNpc2lvbik7CisgICAgfQorCitwcml2YXRlOgorICAg
IFRlbXBvcmFsSW5zdGFudChWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OkV4YWN0VGltZSk7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYpOworICAgIHN0YXRpYyBJU084NjAxOjpFeGFjdFRpbWUgZnJvbU9iamVjdChK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KElTTzg2MDE6OkV4YWN0VGltZSwgSlNPYmplY3QqIHRpbWVab25lLCBQcmVjaXNpb25EYXRhKTsK
KworICAgIFBhY2tlZDxJU084NjAxOjpFeGFjdFRpbWU+IG1fZXhhY3RUaW1lOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFhNDI4
MGExY2U2NzA5MGE2NzgxM2MyMTg2NWIyYzVlM2VlYjY1YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJU
ZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoU2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
RnVuY0NvbXBhcmUpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAm
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yVGFibGUKKyAgZnJvbSAgICAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
ZnJvbUVwb2NoU2Vjb25kcyAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9t
RXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTWlsbGlz
ZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29u
ZHMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVwb2NoTWljcm9zZWNvbmRzICB0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgZnJvbUVwb2NoTmFub3NlY29uZHMgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29t
cGFyZSAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJl
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKK0BlbmQKKyovCisKK1RlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5z
dGFudFByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBpbnN0YW50UHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0
b3I7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxU
ZW1wb3JhbEluc3RhbnQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3Ry
dWN0VGVtcG9yYWxJbnN0YW50KTsKKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OlRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbEluc3RhbnQsIGNvbnN0cnVjdFRlbXBv
cmFsSW5zdGFudCkKK3sKK30KKwordm9pZCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90
b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJJbnN0YW50Il9zLCBQ
cm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGluc3RhbnRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAg
ICBpbnN0YW50UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgaW5z
dGFudFN0cnVjdHVyZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiTWlzc2luZyByZXF1aXJlZCBlcG9jaE5hbm9zZWNvbmRzIGFyZ3VtZW50
IHRvIFRlbXBvcmFsLkluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgc3RydWN0dXJlKSkpOwor
fQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsSW5zdGFudCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkluc3RhbnQi
KSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3RvckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50
Ojpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVw
b2NoU2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoU2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
RnVuY0Zyb21FcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5v
c2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJv
bUVwb2NoTmFub3NlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50
Ojpjb21wYXJlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI0OTg3ZDlkZTMyMDFiMmM4M2FmM2RlZGUyYTIxODk1YThmMmY2OTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGU7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yIGZp
bmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBJbnRlcm5hbEZ1bmN0aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxYmRkZmJm
MmYxZmJiMmQ5MjYyMzgwYWIyNWVkN2Y2MTU1ZjJkODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCkBA
IC0wLDAgKzEsMzI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaCIKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJ
bnN0YW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVGdW5jVW50aWwpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1NpbmNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNUb1N0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9KU09OKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFs
dWVPZik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
R2V0dGVyRXBvY2hNaWNyb3NlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyk7CisKK30K
KworI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlbXBvcmFsLkluc3RhbnQiLCAmQmFzZTo6c19pbmZvLCAmaW5zdGFudFByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZSkgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgK
K0BiZWdpbiBpbnN0YW50UHJvdG90eXBlVGFibGUKKyAgYWRkICAgICAgICAgICAgICAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNBZGQgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
U3VidHJhY3QgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB1bnRpbCAgICAgICAg
ICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgc2luY2UgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNTaW5jZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJv
dW5kICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBlcXVhbHMgICAgICAgICAgICAgdGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFscyAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgdG9TdHJpbmcgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNU
b1N0cmluZyAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAg
ICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9KU09OICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0cmluZyAgICAgdGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdmFs
dWVPZiAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGVwb2NoU2Vjb25kcyAgICAgICB0ZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMgICAgICAgRG9udEVudW18UmVhZE9u
bHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hNaWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21B
Y2Nlc3NvcgorICBlcG9jaE1pY3Jvc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0
dGVyRXBvY2hNaWNyb3NlY29uZHMgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisg
IGVwb2NoTmFub3NlY29uZHMgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE5h
bm9zZWNvbmRzICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisK
K1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU+KHZt
LmhlYXApKSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgcHJv
dG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHByb3RvdHlwZTsKK30KKwor
U3RydWN0dXJlKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwor
dm9pZCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30K
Kworc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBk
aXNhbGxvd2VkQWRkaXRpb25Vbml0cyA9IHsKKyAgICBUZW1wb3JhbFVuaXQ6OlllYXIsCisgICAg
VGVtcG9yYWxVbml0OjpNb250aCwKKyAgICBUZW1wb3JhbFVuaXQ6OldlZWssCisgICAgVGVtcG9y
YWxVbml0OjpEYXksCit9OworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJ
bnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisK
KyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvTGlt
aXRlZER1cmF0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgZGlzYWxs
b3dlZEFkZGl0aW9uVW5pdHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RUaW1lID0g
aW5zdGFudC0+ZXhhY3RUaW1lKCkuYWRkKGR1cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGlt
ZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFkZGl0
aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsICpuZXdF
eGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50
Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlv
bjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFj
dFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAgICBpZiAoIW5l
d0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3Jh
bC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxP
YmplY3QsICpuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3Rh
bnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3Rh
bnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdCA9
IGluc3RhbnQtPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBvdGhlciwgb3B0aW9ucyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9u
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3Rh
bnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zaW5jZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBv
cmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUg
b3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24g
cmVzdWx0ID0gb3RoZXItPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LCBvcHRpb25z
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFyZ3VtZW50Il9z
KTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5yb3Vu
ZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgbmV3RXhhY3RUaW1lKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGlu
c3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5l
cXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpbnN0
YW50LT5leGFjdFRpbWUoKSA9PSBvdGhlci0+ZXhhY3RUaW1lKCkpKTsKK30KKworLy8gVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUudG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQucHJvdG90eXBl
LnRvc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIGluc3RhbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBpbnN0YW50LT50b1N0cmluZygpKSkpOworfQorCisvLyBGSVhNRTogSXMgdGhpcyBiZXR0ZXIg
YXMgYSBKU0J1aWx0aW4/CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBU
ZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIEluc3RhbnQiX3MpOworCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXR0ZXIgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgZm9ybWF0dGVyLT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gRklYTUU6IGNoYW5nZSBJbnRsRGF0
ZVRpbWVGb3JtYXQgdG8gdXNlIGVwb2NoTmFub3NlY29uZHMKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXR0ZXItPmZvcm1hdChnbG9iYWxPYmplY3Qs
IGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxs
ZWQuIFRvIGNvbXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0YW50LmNvbXBh
cmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hTZWNvbmRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoU2Vjb25kcygpKSk7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0
ZXJFcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghaW5z
dGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTWlsbGlzZWNvbmRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkp
KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUdldHRlckVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWNyb3NlY29uZHMgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9y
QmlnSW50MzIoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE1pY3Jvc2Vj
b25kcygpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTmFub3NlY29u
ZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9t
KGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hOYW5vc2Vjb25kcygpKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhk
ZGZiMTQ2OTg5NzhiOGMwN2UxOGIyMGVjOTNkMzkyZDc5ODM5MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZp
bmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2Up
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3Rh
dGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBmZjBiY2ZkY2Y4MmQyMjFk
MWVjYjg1YThjMWI0NmI2NTFiNGRiNzM1Li44OTQ2YTBjYzYxMDQ4NGY4ODI0ZjVjZmRlN2NmNGI3
Mzk4NWM5ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgiCisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAtNjUsNiArNjgsMTMgQEAgc3RhdGljIEpTVmFsdWUg
Y3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAg
cmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbER1
cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90
eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlSW5zdGFudENvbnN0cnVj
dG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9iamVjdCogdGVt
cG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKKyAgICByZXR1cm4gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNv
bnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1wb3JhbE9iamVj
dCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwpAQCAt
ODksNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEBiZWdpbiB0ZW1wb3JhbE9iamVjdFRhYmxl
CiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVu
dW18UHJvcGVydHlDYWxsYmFjawogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0
cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgSW5zdGFudCAgICAgICAg
Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNr
CiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAgRG9udEVu
dW18UHJvcGVydHlDYWxsYmFjawogICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFpblRpbWVDb25z
dHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpvbmUgICAgICAg
Y3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNr
CkBAIC0zNzQsNiArMzg1LDE3IEBAIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6CiAgICAgfQogfQog
CisvLyBGb3JtYXRTZWNvbmRzU3RyaW5nUGFydCAoIHNlY29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jv
c2Vjb25kLCBuYW5vc2Vjb25kLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0c2Vjb25kc3N0cmluZ3BhcnQKK3ZvaWQg
Zm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQg
c2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7Cisg
ICAgaWYgKHByZWNpc2lvbi51bml0ID09IFRlbXBvcmFsVW5pdDo6TWludXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBidWlsZGVyLmFwcGVuZCgnOicsIHBhZCgnMCcsIDIsIHNlY29uZCkpOwor
ICAgIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlvbiwgcHJlY2lz
aW9uLnByZWNpc2lvbik7Cit9CisKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9uUm91bmRpbmdJ
bmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3JhbGR1cmF0aW9ucm91bmRpbmdpbmNyZW1lbnQKIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0
IHVuaXQpCkBAIC00MzUsNiArNDU3LDQzIEBAIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50
KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUgbW9kZSkKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgSW50MTI4IGFicyhJbnQxMjgg
eCkKK3sKKyAgICByZXR1cm4geCA8IDAgPyAteCA6IHg7Cit9CisKKy8vIFNhbWUgYXMgYWJvdmUs
IGJ1dCB3aXRoIEludDEyOAorSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4IHgs
IEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQoreworICAgIGlmIChpbmNyZW1l
bnQgPT0gMSkKKyAgICAgICAgcmV0dXJuIHg7CisKKyAgICBJbnQxMjggcXVvdGllbnQgPSB4IC8g
aW5jcmVtZW50OworICAgIEludDEyOCByZW1haW5kZXIgPSB4ICUgaW5jcmVtZW50OworICAgIGlm
ICghcmVtYWluZGVyKQorICAgICAgICByZXR1cm4geDsKKworICAgIGJvb2wgc2lnbiA9IHJlbWFp
bmRlciA8IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkNl
aWw6CisgICAgICAgIGlmICghc2lnbikKKyAgICAgICAgICAgIHF1b3RpZW50Kys7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAgaWYgKHNpZ24p
CisgICAgICAgICAgICBxdW90aWVudC0tOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5k
aW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpI
YWxmRXhwYW5kOgorICAgICAgICAvLyAiaGFsZiB1cCBhd2F5IGZyb20gemVybyIKKyAgICAgICAg
aWYgKGFicyhyZW1haW5kZXIgKiAyKSA+PSBpbmNyZW1lbnQpCisgICAgICAgICAgICBxdW90aWVu
dCArPSBzaWduID8gLTEgOiAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHF1
b3RpZW50ICogaW5jcmVtZW50OworfQorCiBUZW1wb3JhbE92ZXJmbG93IHRvVGVtcG9yYWxPdmVy
ZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucykKIHsK
ICAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1wb3JhbE92ZXJmbG93PihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5vdmVyZmxvdywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4IGIzMGRl
OTcwMTcxNDc4ODZjMGE4NDA2MDdmNmY2MmZiMGY2ZjU3NTEuLmZhMmEzYWUxZWJlMzNkYTkxZWIw
NGFkNjQ2NWE1Y2EyMjlkMTk3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNSw5ICsxMDYsMTEgQEAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdGVtcG9yYWxGcmFjdGlvbmFsU2Vjb25kRGlnaXRzKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QKIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lv
bihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFJvdW5kaW5nTW9kZSB0ZW1w
b3JhbFJvdW5kaW5nTW9kZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUm91bmRpbmdNb2Rl
KTsKIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImLCB1bnNp
Z25lZCBmcmFjdGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPik7Cit2b2lkIGZv
cm1hdFNlY29uZHNTdHJpbmdQYXJ0KFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBzZWNvbmQsIHVu
c2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhKTsKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
YXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJv
dW5kaW5nSW5jcmVtZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBkaXZpZGVuZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5k
TnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlLCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUp
OworSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4LCBJbnQxMjggaW5jcmVtZW50
LCBSb3VuZGluZ01vZGUpOwogCiBlbnVtIGNsYXNzIFRlbXBvcmFsT3ZlcmZsb3cgOiBib29sIHsK
ICAgICBDb25zdHJhaW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMzhl
OTUxMjliYTlmMDIxMTBhMWM0M2UwNTFjNGFhNjc4YzZmZDBkMy4uODdjMzAyNmUwNTk2OGEyZDZl
Nzc3NDUyMzVkNDVkMTNmNTIyN2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMTY2LDYgKzE2Niw3IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRp
bHMuaCIKQEAgLTE1OTUsNiArMTU5Niw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxD
YWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24p
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsSW5zdGFudCkKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1VpbnQ4QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhYTg5YjI4
YWRlMmYyNWI2Y2M4NDQwZDYxNGJjOTQ3YWUzYmE0Zjc0Li5iMGJlOTgxMzU0ZDliYjk4YzEwNTI0
NWExMTMxZDNiYjAxMjNhMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE4
Nyw2ICsxODcsNyBAQCBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKIGNsYXNzIFN5bWJvbDsKIGNsYXNz
IFRlbXBvcmFsRHVyYXRpb247CitjbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFy
cmF5Q29udHJvbGxlcjsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRF
dmFsQ29kZUJsb2NrOwpAQCAtNjAwLDYgKzYwMSw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJh
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxJbnN0YW50U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0
ZW1wb3JhbFBsYWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4
ZWFiYTQ2NmI2ZTZjMGFkNjZkYzAyZjUyNTc0MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRlZTQ4NTUz
NjE3ZmNhMDZkOGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCkBAIC0zODgsNiArMzg4LDExIEBAIGlubGluZSBp
bnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikK
ICAgICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAKK2lubGluZSBkb3VibGUgdGltZVRvTVMoZG91Ymxl
IGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4g
KCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWlu
dXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Cit9CisKIC8vIFJldHVybnMgY29t
YmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklW
QVRFIExvY2FsVGltZU9mZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0lu
TWlsbGlzZWNvbmRzLCBUaW1lVHlwZSA9IFVUQ1RpbWUpOwogCkBAIC00MTAsNiArNDE1LDcgQEAg
dXNpbmcgV1RGOjptc1RvSG91cnM7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1c2luZyBX
VEY6OnNlY29uZHNQZXJNaW51dGU7CiB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZD
MjgyMkRhdGVTdHJpbmc7CiB1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6
Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50
MTI4LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaAppbmRleCA2NWZlODMyNDNhMjA4M2FjY2Zj
NjljMGM2MzVkNTZhODgwMzQ1NjQwLi4yZGQ1MDQ0YmFlMTAzMTUwNmI5ZWUxMjZkN2JlZmZkYzBh
MThiYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9JbnQxMjguaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogbG93
XyB7c3RhdGljX2Nhc3Q8c3RkOjp1aW50NjRfdD4obil9CiAgICAgICAgICwgaGlnaF8gey1zdGF0
aWNfY2FzdDxzdGQ6OnVpbnQ2NF90PihuIDwgMCl9CiAgICAgeyB9CisgICAgY29uc3RleHByIElu
dDEyOEltcGwoY29uc3QgSW50MTI4SW1wbDwhSVNfU0lHTkVEPiBuKQorICAgICAgICA6IGxvd18g
eyBuLmxvdygpIH0sIGhpZ2hfIHsgbi5oaWdoKCkgfSB7IH0KICAgICBjb25zdGV4cHIgSW50MTI4
SW1wbChjb25zdCBJbnQxMjhJbXBsICYpID0gZGVmYXVsdDsKICAgICBjb25zdGV4cHIgSW50MTI4
SW1wbChJbnQxMjhJbXBsICYmKSA9IGRlZmF1bHQ7CiAgICAgY29uc3RleHByIEludDEyOEltcGwg
Jm9wZXJhdG9yPShjb25zdCBJbnQxMjhJbXBsICYpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzM4MGU3MjZjMjRkNmVh
ZDAzNmJhYzMxYTYzNmU4MjVlOWQwOGY1Mi4uYTJiZGJkYjBiMjQzOWRkYmNmNjA1NDg0N2U3NjU0
M2M0YjdmMDdkNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wOS0yMyAgUGhpbGlwIENoaW1lbnRvICA8
cGNoaW1lbnRvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFs
Lkluc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkTm90QmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoaW5zdGFudHMuZm9yRWFjaCk6CisgICAgICAgIChzaG91bGRUaHJvdy5uZXcuVGVtcG9yYWwu
SW5zdGFudCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDogTm8gbmVlZCB0byBpZ25v
cmUgYWxsIFRlbXBvcmFsLkluc3RhbnQgdGVzdHMKKyAgICAgICAgICBhbnltb3JlLCBvbmx5IHRo
ZSBvbmVzIGZvciB0aGUgdW5pbXBsZW1lbnRlZCBtZXRob2RzLgorCiAyMDIxLTEwLTExICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGJyYW5jaCBhcm91
bmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiBpbiBERkcgZW51bWVyYXRvciBnZXQgYnkgdmFsIGFuZCBw
YXNzIGluIHRoZSByaWdodCBMVmFsdWUgdHlwZSB0byBzdHJpY3RJbnQ1MlRvSlNWYWx1ZQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzExMzQ1OWRjNDk4ZDI3ODVlNDkx
MTY4YzZlMTBmYWE3N2JlYTQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLWluc3RhbnQuanMKQEAgLTAsMCArMSwyOTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZE5vdEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsID09PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBhIHZhbHVlIHRvIGJlIGRp
ZmZlcmVudCBmcm9tICR7ZXhwZWN0ZWR9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworICAgIGlmIChtZXNz
YWdlICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbChtZXNzYWdlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXScpIHsKKyAgICAgICAgICAgIGlm
ICghbWVzc2FnZS50ZXN0KFN0cmluZyhlcnJvcikpKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5nKGVycm9yKX0nIHRvIG1hdGNoICR7bWVzc2FnZX0h
YCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3Ip
LCBtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gZXBvY2gKK3sKKyAgICBjb25z
dCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pLAorICAgICAg
ICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMCksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTmFub3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzAtMDEtMDFUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNoKChp
bnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCAwKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgMCk7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3Rh
bnQudG9TdHJpbmcoKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQudG9KU09OKCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgIH0pOworfQor
CisvLyBwb3NpdGl2ZSBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAg
ICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygxXzAwMF8wMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMV8wMDBfMDAw
XzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25k
cygxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hOYW5vc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMjAwMS0wOS0wOVQwMTo0Njo0MFonKSwKKyAgICBdOworICAg
IGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaFNlY29uZHMsIDFfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTWlsbGlzZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAw
XzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjAwMS0w
OS0wOVQwMTo0Njo0MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIw
MDEtMDktMDlUMDE6NDY6NDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG5lZ2F0aXZlIGVwb2NoIHZh
bHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0
YW50KC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbUVwb2NoU2Vjb25kcygtMV8wMDBfMDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAwMCksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAw
MF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcygt
MV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNo
KChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCAt
MV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29u
ZHMsIC0xXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hN
aWNyb3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxOTM4LTA0LTI0VDIyOjEzOjIw
WicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTkzOC0wNC0yNFQyMjox
MzoyMFonKTsKKyAgICB9KTsKK30KKworLy8gbWF4aW50NjQgZXBvY2ggdmFsdWUKK3sKKyAgICBj
b25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoOTIyMzM3MjAz
Njg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNv
bmRzKDkyMjMzNzIwMzY4NTQ3NzU4MDduKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKSwKKyAgICBdOworICAgIGluc3RhbnRz
LmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNl
Y29uZHMsIDkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlz
ZWNvbmRzLCA5MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
Y3Jvc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTmFub3NlY29uZHMsIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC50b1N0cmluZygpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDdaJyk7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2
Ljg1NDc3NTgwN1onKTsKKyAgICB9KTsKK30KKworLy8gbWluaW50NjQgZXBvY2ggdmFsdWUKK3sK
KyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoLTky
MjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hO
YW5vc2Vjb25kcygtOTIyMzM3MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicpLAorICAgIF07CisgICAg
aW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoU2Vjb25kcywgLTkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoTWlsbGlzZWNvbmRzLCAtOTIyMzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGluc3Rh
bnQuZXBvY2hNaWNyb3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTY3Ny0wOS0yMVQwMDoxMjo0My4x
NDUyMjQxOTJaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxNjc3LTA5
LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKTsKKyAgICB9KTsKK30KKworLy8gbWF4IEluc3RhbnQg
cmFuZ2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLklu
c3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoU2Vjb25kcyg4NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwKSwKKyAg
ICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoODY0MDBfMDAwMF8w
MDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vj
b25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5zdGFu
dHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2No
U2Vjb25kcywgODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE1pbGxpc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAw
MF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJysyNzU3
NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCks
ICcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyBtaW4gSW5zdGFu
dCByYW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwu
SW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMF8wMDAp
LAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtODY0MDBf
MDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hO
YW5vc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKSwKKyAgICBdOworICAg
IGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaFNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwXzAw
MG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC04NjQwMF8w
MDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmlu
ZygpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC50b0pTT04oKSwgJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8v
IHRvbyBsYXJnZQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoODY0MDBf
MDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC9cYjg2NDAwMDAwMDAwMDAwMDAw
MDAwMDFcYi8pOworLy8gdG9vIHNtYWxsCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwu
SW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC8tODY0
MDAwMDAwMDAwMDAwMDAwMDAwMVxiLyk7CisvLyBsYXJnZXIgdGhhbiBtYXhpbnQxMjgKK3Nob3Vs
ZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFuIDw8IDEyOW4pLCBSYW5nZUVycm9y
LCAvXGI2ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5MTJcYi8pOworLy8gc21h
bGxlciB0aGFuIG1pbmludDEyOAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3Rh
bnQoLTFuIDw8IDEyOW4pLCBSYW5nZUVycm9yLCAvLTY4MDU2NDczMzg0MTg3NjkyNjkyNjc0OTIx
NDg2MzUzNjQyMjkxMlxiLyk7CisvLyBkb2VzIG5vdCBjcmFzaCB3aGVuIGJpZ2ludCBsb25nZXIg
dGhhbiBtYXhpbnQzMiBkaWdpdHMKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0
YW50KEJpZ0ludCgnOScucmVwZWF0KDIxNDc0ODM2NDcpKSksIFJhbmdlRXJyb3IpOworLy8gY29u
c3RydWN0cyBmcm9tIHN0cmluZworc2hvdWxkQmUobmV3IFRlbXBvcmFsLkluc3RhbnQoJzAnKS5l
cG9jaE5hbm9zZWNvbmRzLCAwbik7CisvLyB0aHJvd3Mgb24gbnVtYmVyCitzaG91bGRUaHJvdygo
KSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgwKSwgVHlwZUVycm9yKTsKKy8vIHRocm93cyBvbiBz
dHJpbmcgdGhhdCBkb2VzIG5vdCBjb252ZXJ0IHRvIEJpZ0ludAorc2hvdWxkVGhyb3coKCkgPT4g
bmV3IFRlbXBvcmFsLkluc3RhbnQoJ2FiYzEyMycpLCBTeW50YXhFcnJvcik7CisKKy8vIEluc3Rh
bnQuZnJvbShpbnN0YW50KSBpcyBub3QgdGhlIHNhbWUgb2JqZWN0Cit7CisgICAgY29uc3QgaW5z
dCA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAyMC0wMi0xMlQxMTo0MiswMTowMFtFdXJvcGUv
QW1zdGVyZGFtXScpOworICAgIHNob3VsZE5vdEJlKFRlbXBvcmFsLkluc3RhbnQuZnJvbShpbnN0
KSwgaW5zdCk7Cit9CisKKy8vIHRvU3RyaW5nCisKK3sKKyAgICBjb25zdCBpMSA9IFRlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyM1onKTsKKyAgICBjb25zdCBpMiA9IFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKKyAgICBjb25zdCBpMyA9
IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOworCisg
ICAgLy8gZGVmYXVsdCBpcyB0byBlbWl0IHNlY29uZHMgYW5kIGRyb3AgdHJhaWxpbmcgemVyb3Mg
YWZ0ZXIgdGhlIGRlY2ltYWwnCisgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcoKSwgJzE5NzYtMTEt
MThUMTU6MjM6MDBaJyk7CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThU
MTU6MjM6MzBaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzNFonKTsKKworICAgIC8vIHRydW5jYXRlcyB0byBtaW51dGUKKyAgICBbaTEsIGky
LCBpM10uZm9yRWFjaCgoaSkgPT4gc2hvdWxkQmUoaS50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDog
J21pbnV0ZScgfSksICcxOTc2LTExLTE4VDE1OjIzWicpKTsKKworICAgIC8vIG90aGVyIHNtYWxs
ZXN0VW5pdHMgYXJlIGFsaWFzZXMgZm9yIGZyYWN0aW9uYWwgZGlnaXRzCisgICAgc2hvdWxkQmUo
aTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZy
YWN0aW9uYWxTZWNvbmREaWdpdHM6IDAgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsg
c21hbGxlc3RVbml0OiAnbWlsbGlzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxT
ZWNvbmREaWdpdHM6IDMgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RV
bml0OiAnbWljcm9zZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdp
dHM6IDYgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbmFu
b3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOSB9KSk7
CisKKyAgICAvLyB0cnVuY2F0ZSBvciBwYWQgdG8gMiBwbGFjZXMKKyAgICB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDIgfTsKKyAgICAgICAgc2hv
dWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAwLjAwWicpOwor
ICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xMlonKTsKKyAgICB9CisgICAgLy8gcGFkIHRvIDcgcGxhY2VzCisgICAg
eworICAgICAgICBjb25zdCBvcHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA3IH07
CisgICAgICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToy
MzowMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25zKSwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9T
dHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQwMDBaJyk7CisgICAgfQor
CisgICAgLy8gcm91bmQgdG8gbmVhcmVzdAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsgc21h
bGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2
LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyM1onKTsKKyAgICAvLyByb3VuZCB1cAorICAgIHNob3VsZEJlKGkyLnRvU3Ry
aW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcx
OTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25h
bFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyNFonKTsKKyAgICAvLyByb3VuZCBkb3duCisgICAgWydmbG9vcicsICd0cnVuYydd
LmZvckVhY2goKHJvdW5kaW5nTW9kZSkgPT4geworICAgICAgICBzaG91bGRCZShpMi50b1N0cmlu
Zyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEtMThU
MTU6MjNaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29u
ZERpZ2l0czogMywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNaJyk7
CisgICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIHJvdW5kaW5nIGRvd24gaXMgdG93YXJkcyB0
aGUgQmlnIEJhbmcsIG5vdCB0b3dhcmRzIDEgQkNFCisgICAgICAgIGNvbnN0IGk0ID0gVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCctMDAwMDk5LTEyLTE1VDEyOjAwOjAwLjVaJyk7CisgICAgICAgIHNo
b3VsZEJlKGk0LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJywgcm91bmRpbmdNb2Rl
OiAnZmxvb3InIH0pLCAnLTAwMDA5OS0xMi0xNVQxMjowMDowMFonKTsKKworICAgICAgICAvLyBy
b3VuZGluZyBjYW4gYWZmZWN0IGFsbCB1bml0cworICAgICAgICBjb25zdCBpNSA9IFRlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5OTlaJyk7CisgICAgICAg
IHNob3VsZEJlKGk1LnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOCwgcm91bmRp
bmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMDAwMDAwWicp
OworICAgIH0KK30KKworLy8gbGVhcCBzZWNvbmQgaXMgY29uc3RyYWluZWQKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAxNi0xMi0zMVQyMzo1OTo2MFonKX1gLCAnMjAxNi0x
Mi0zMVQyMzo1OTo1OVonKTsKKy8vIHZhcmlhbnQgdGltZSBzZXBhcmF0b3JzCitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMTggMTU6MjNaJyl9YCwgJzE5NzYtMTEt
MThUMTU6MjM6MDBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMTh0MTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyB2YXJpYW50IFVU
QyBkZXNpZ25hdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEt
MThUMTU6MjN6Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyBhbnkgbnVtYmVyIG9m
IGRlY2ltYWwgcGxhY2VzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTU6MjM6MzAuMVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpfWAs
ICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjNaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzNFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Wicp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NlonKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xMjM0NTZaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjM0NTY3WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyMzQ1Njc4WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4Wicp
Oworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMw
LjEyMzQ1Njc4OVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7CisvLyB2
YXJpYW50IGRlY2ltYWwgc2VwYXJhdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAsMTJaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJa
Jyk7CisvLyB2YXJpYW50IG1pbnVzIHNpZ24KK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlx1MjIxMjAyOjAwJyl9YCwgJzE5NzYtMTEtMThU
MTc6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJ1x1MjIx
MjAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnLTAwOTk5OS0xMS0xOFQxNToyMzozMC4x
MlonKTsKKy8vIG1peHR1cmUgb2YgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAorc2hvdWxkQmUo
YCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMw
LjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6
MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5
NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVon
KTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTUyMzMwLjEr
MDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwgJzE5NzYt
MTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgn
KzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFa
Jyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThUMTU6
MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThU
MTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUo
YCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIzMzAuMSswMDAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKKy8vIG9wdGlvbmFsIHBhcnRzCitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzArMDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3Ni0xMS0xOFQxNVonKX1gLCAnMTk3Ni0xMS0xOFQxNTowMDowMFonKTsKKy8vIGlnbm9yZXMg
YW55IHNwZWNpZmllZCBjYWxlbmRhcgorLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyCisvLyBzaG91
bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2
Nzg5Wlt1LWNhPWRpc2NvcmRdJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wicp
OworLy8gbm8ganVuayBhdCBlbmQgb2Ygc3RyaW5nCitzaG91bGRUaHJvdygoKSA9PiBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wmp1bmsnKSwgUmFu
Z2VFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggODkwOGRjZWRiYjM5NDk3ZGMwMTdkZGRlYTZk
MzM4OWIyOGQ0ZmRmZC4uMWI3MzU3ODI5MjM4M2U4MDcxZGUzOTJhY2NjMDQ5MmZlYjAzZGZjYiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbApAQCAtMjMsNyArMjMsOCBAQCBza2lwOgogICAgIC0gU2hhZG93UmVh
bG0KICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9DYWxlbmRhcgotICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudAorICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lCisgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08KICAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL05vdwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvUGxhaW5EYXRlCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpbkRhdGVU
aW1lCkBAIC0zNCw3ICszNSw4IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvWm9uZWREYXRlVGltZQog
ICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0NhbGVuZGFyCi0gICAgLSB0ZXN0L2ludGw0MDIv
VGVtcG9yYWwvSW5zdGFudAorICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0luc3RhbnQvcHJv
dG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0luc3Rh
bnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZUlTTwogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBv
cmFsL05vdwogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVz
dC9pbnRsNDAyL1RlbXBvcmFsL1BsYWluRGF0ZVRpbWUKQEAgLTI0Nyw2ICsyNDksNyBAQCBza2lw
OgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvU3Ry
aW5nL3NtYWxsZXN0dW5pdC1wbHVyYWxzLWFjY2VwdGVkLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvY2FsZW5kYXItdGVtcG9yYWwtb2Jq
ZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUv
dG90YWwvdW5pdC1wbHVyYWxzLWFjY2VwdGVkLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy9zbWFsbGVzdHVuaXQtcGx1cmFscy1hY2Nl
cHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBhcmUv
Y2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9QbGFpblRpbWUvZnJvbS9jYWxlbmRhci10ZW1wb3JhbC1vYmplY3QuanMKICAgICAtIHRlc3Qv
YnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5cGUvZXF1YWxzL2NhbGVuZGFyLXRl
bXBvcmFsLW9iamVjdC5qcwpAQCAtMjcyLDYgKzI3NSwxMyBAQCBza2lwOgogICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3N1YnRyYWN0L29yZGVyLW9mLW9w
ZXJhdGlvbnMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3Rv
dHlwZS90b3RhbC9kYXRldW50aWwtZmllbGQuanMKIAorICAgICMgRGVwZW5kcyBvbiBUZW1wb3Jh
bC5UaW1lWm9uZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5
cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itbm9uLWludGVnZXIu
anMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3Ry
aW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcworICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGlt
ZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itd3JvbmctdHlwZS5qcworICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtc3Ry
aW5nLWRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3By
b3RvdHlwZS90b1N0cmluZy90aW1lem9uZS5qcworCiAgICAgIyBEZXBlbmRzIG9uIFRlbXBvcmFs
LlpvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL2Nv
bXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLW5lZ2F0aXZlLWVwb2NobmFub3NlY29uZHMu
anMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL2NvbXBhcmUvcmVsYXRp
dmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1p
bnRlZ2VyLmpzCkBAIC0yOTksNiArMzA5LDExIEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0
aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCiAgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvcmVsYXRp
dmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1v
Zi1yYW5nZS5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90
eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5v
c2Vjb25kc2Zvci13cm9uZy10eXBlLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9J
bnN0YW50L2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9mcm9tL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL2VxdWFscy9hcmd1
bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS9zaW5jZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS91bnRpbC9hcmd1bWVudC16b25l
ZGRhdGV0aW1lLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29t
cGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLW5lZ2F0aXZlLWVwb2NobmFub3NlY29uZHMuanMK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2FyZ3VtZW50
LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itbm9uLWludGVn
ZXIuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2Fy
Z3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itb3V0
LW9mLXJhbmdlLmpzCkBAIC0zMzQsNSArMzQ5LDYgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3VuZC9iYWxhbmNlLW5lZ2F0aXZlLXJl
c3VsdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBl
L3JvdW5kL3JvdW5kLW5lZ2F0aXZlLXJlc3VsdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3N1YnRyYWN0L2JhbGFuY2UtbmVnYXRpdmUtcmVzdWx0
LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS91bnRp
bC9pbnN0YW50LXN0cmluZy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5U
aW1lL3Byb3RvdHlwZS9zaW5jZS9iYWxhbmNlLW5lZ2F0aXZlLXRpbWUtdW5pdHMuanMKICAgICAt
IHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5cGUvdW50aWwvYmFsYW5j
ZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442118</attachid>
            <date>2021-10-21 21:54:14 -0700</date>
            <delta_ts>2021-10-21 22:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211021215413.patch</filename>
            <type>text/plain</type>
            <size>160156</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2YxMzUwYTVhMjFlYjljNTUyZDMyM2MwYjczNTBmMjNiZWEzMTYyLi4wYzkzOWNhNmVkYjRkMzlk
MzIxMTNkOWE2OWQ2ZGRiZmRlNzEzZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtjbGFuZyAxM10gU3VwcHJlc3Mgc2lnbiBjb21wYXJpc29uIHdhcm5p
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDhjMDJhZmJkNWI3YjI1M2Q1M2I3ZDA1Nzc2ZGMyOWRmODMzOTllM2EuLmRkOTcx
MzY4MDNkOGZhMmExZDU2YmRiNTRiZTFkNmI5MjEwYjNmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
OiBXb3JrIGFyb3VuZCBDbGFuZy9MaW51eCBidWcgd2hlcmUKKyAgICAgICAgICBfX2J1aWx0aW5f
bXVsX292ZXJmbG93KCkgZG9lc24ndCB3b3JrIG9uIF9faW50MTI4LgorICAgICAgICAgIFNlZSBo
dHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisgICAgICAgICogd3Rm
L0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OnRpbWVUb01TKTogTW92ZWQgZnJvbSBKU0RhdGVN
YXRoLmguCisgICAgICAgICogd3RmL0ludDEyOC5oOgorICAgICAgICAoV1RGOjpJbnQxMjhJbXBs
OjpJbnQxMjhJbXBsKTogQWRkIGFuIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGZvciBkb3VibGUsCisg
ICAgICAgICAgdXNpbmcgaW1wbGVtZW50YXRpb24gb2YgX19maXhkZnRpKCkgYW5kIF9fZml4dW5z
ZGZ0aSgpIGZyb20gQ2xhbmcKKyAgICAgICAgICBjb21waWxlcl9ydC4gQWxzbyBhZGQgYSBjb252
ZXJzaW9uIGZyb20gSW50MTI4IHRvIFVJbnQxMjgKKyAgICAgICAgICBhbmQgdmljZSB2ZXJzYSwg
Zm9yIHVzZSBpbiBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoV1RGOjpJbnQxMjhJbXBsOjpv
cGVyYXRvciBkb3VibGUgY29uc3QpOiBBZGQgYW4gZXhwbGljaXQgY29udmVyc2lvbgorICAgICAg
ICAgIG9wZXJhdG9yIHRvIGRvdWJsZS4gQ3VycmVudGx5IHVzZXMgYSBzbG93ZXIgYWxnb3JpdGht
LCBwZW5kaW5nCisgICAgICAgICAgaW52ZXN0aWdhdGlvbiBvZiB1c2luZyBpbXBsZW1lbnRhdGlv
biBvZiBfX2Zsb2F0dGlkZigpIGFuZAorICAgICAgICAgIF9fZmxvYXR1bnRpZGYoKS4KKyAgICAg
ICAgKFdURjo6SW50MTI4SW1wbDo6ZG91YmxlQXNCaXRzKTogSGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAoV1RGOjpJbnQxMjhJbXBsOjpiaXRzQXNEb3VibGUpOiBIZWxwZXIgZnVuY3Rpb24uCisK
IDIwMjEtMTAtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgb2xkIEdDQyB3b3JrYXJvdW5kIGZvciBBbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4YjkxODJjZWQxMDE5NTFhOGQwMDViMDZiN2UxN2MxOTYx
YWRhMDc2Li45MmJmOTU2M2JmOWRmOWI4M2VjZTg1MzQyNWIyOTU3NmEzMTI2ZDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEzLDggQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRp
bWUvVGVtcG9yYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA1YzQ3YWY5OWQ0MTc4YjJjOWU2NGQyNTVlOGU5MzNj
MDgwMTI0MWQ2Li43NjgxMzBiMGI3MDNlYWUyMDU2MTgzYWI2OGE3NDM1NmYyNzdmODNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtMTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAx
MTIyOWQ1N2IyYjNiZTg4ZjE4MGNjNmU4MDcxNzM1ZWU0Y2ZhOWVjLi42NWY0OTZmMjgyYzcxMDc4
OTYwMmM1OGE1NWYxZmNlOThkYmRkMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC03Miw2ICs3Miw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
Tm93Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvVGVtcG9yYWxPYmplY3QubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGM5MjdhNTRl
Zjc1MzhlYjk1ZDUzNTY3Zjg2MTdlZWFiODE1NTJmMGUuLjZlNWIxNmE3M2EyNjUxYWQzZjZjMDQ0
MDE0NjI1NjQ1ZDY4OTUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0xOTcsNiArMTk3LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIFRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRpb25Db25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCisg
ICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFs
T2JqZWN0Lmx1dC5oIFwKICAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2Nl
MjkzNDIwNDI4OTNmMmJkZi4uM2Q5NDc2ODU2N2ExZTBmY2E2MWEzZDlhZDJjYzE2ODBmOWZmMmIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NzQsNiArMTk3NCwxMSBAQAog
CQlFM0ZGNzUzMzFEOUNFQTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZGNzUyRjFEOUNFQTEy
MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5
REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE0OTEyRUYyNjFB
MDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Lmgg
Ki87IH07CisJCUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgg
Ki87IH07CisJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2
RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLzsg
fTsKKwkJRjZENjdENDcyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1
dC5oICovOyB9OworCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5sdXQuaCAqLzsgfTsKIAkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2Jq
ZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovOyB9Owog
CQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDQxNTUyMjUyRUMwNzMw
MDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMDVGQUZEMUZFNENFREEwMDA5MzIzMCAvKiBEZXBy
ZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5MkQ2QTExMUZCRDQ5MUQwMDAyNDVGNCAvKiBEZXByZWNhdGVkSW5z
cGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKQEAgLTUzNzEsNiArNTM3NiwxNCBAQAogCQlGNjkyQTg3
RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0UwMjU1NTk3RDAxRkY2MEY3IC8q
IFJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Owog
CQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NKU1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNkQ2N0QzOTI2
RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2
N0QzRDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNFMjZGOTAyRTgwMDZF
MDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUwMTgyNjkzRDMz
RDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlbXBvcmFsTm93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDE5
MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY2RjE1MDFBMjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEwNiw2ICs3MTE5LDggQEAKIAkJCQk5OTZCNzMx
NDFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUUzQzQ2
MzA1MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmgg
Ki8sCiAJCQkJRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUubHV0LmggKi8sCisJCQkJRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJRjZGMTUwMjAyNjkz
RDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovLAogCQkJCTUzM0IxNURFMURD
N0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8sCiAJCQkJQUQyRkNDMEExREI1OUM1OTAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi8sCkBAIC04
MDc1LDYgKzgwOTAsMTIgQEAKIAkJCQlBM0M3RURCNDI2QjBEQjM3MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTNDN0VEQjUyNkIwREIzNzAwNEMzNEM1
IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwICovLAogCQkJCUEzQzdFREIwMjZCMERC
MzYwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJRjZENjdE
MzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAgKi8sCisJCQkJRjZENjdE
M0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovLAorCQkJCUY2RDY3RDNC
MjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmggKi8sCisJCQkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJRjZENjdEM0UyNkY5MDJFODAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oICovLAogCQkJCUY2RjE1MDFCMjY5M0QzM0UwMDRCOThFRiAvKiBU
ZW1wb3JhbE5vdy5jcHAgKi8sCiAJCQkJRjZGMTUwMTgyNjkzRDMzRDAwNEI5OEVGIC8qIFRlbXBv
cmFsTm93LmggKi8sCiAJCQkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2Jq
ZWN0LmNwcCAqLywKQEAgLTEwODE4LDYgKzEwODM5LDExIEBACiAJCQkJQTNDN0VEQjkyNkIwREIz
ODAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQzdF
REJBMjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUEzQzdFREI2MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0MjI2Rjkw
MkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ4
MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3RTI2RTg2N0I4MDBFNEMyOEIgLyogVGVt
cG9yYWxQbGFpblRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdCMjZFODY3QjgwMEU0
QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMGUyM2EyZjM2YzEyNWU5NjdmMGVmYTVjNGQ5
Yjk4ZGE4OGNlYzEzLi5kZmM5Njc3ZTMxNjQwMjY2MzI0ZDIxMzBiYmQzNWY2OTUzMGNlZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIxLDYgKzEwMjEsOSBAQCBydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcAor
cnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwCiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCA1OWIxYzdlZjViMzkzZDJkYTQ5
ZTQyNjY5OTQ0MDM2Njc2OGI5YTUwLi40MTA5MDQwODI3NThhMTNjNjRiNTZhN2JkZTRiYjc4ODlk
MjVjY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcApAQCAt
MjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIlBhcnNl
SW50LmgiCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1BhcnNpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgpAQCAtODc3LDYgKzg3OSwzNyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRl
LCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZQogICAgIH0pOwog
fQogCitzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1U
ZW1wb3JhbEluc3RhbnRTdHJpbmcKKyAgICAvLyBUZW1wb3JhbEluc3RhbnRTdHJpbmcgOgorICAg
IC8vICAgICBEYXRlIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyAgICAgRGF0ZSBEYXRl
VGltZVNlcGFyYXRvciBUaW1lU3BlYyBUaW1lWm9uZU9mZnNldFJlcXVpcmVkCisKKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVPZmZzZXRSZXF1
aXJlZAorICAgIC8vIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQgOgorICAgIC8vICAgICBUaW1lWm9u
ZVVUQ09mZnNldCBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb25fb3B0CisKKyAgICByZXR1cm4g
cmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6
b3B0aW9uYWw8RXhhY3RUaW1lPiB7CisgICAgICAgIGF1dG8gZGF0ZXRpbWUgPSBwYXJzZURhdGVU
aW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghZGF0ZXRpbWUpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtkYXRlLCBtYXliZVRpbWUsIG1heWJlVGltZVpv
bmVdID0gZGF0ZXRpbWUudmFsdWUoKTsKKyAgICAgICAgaWYgKCFtYXliZVRpbWVab25lIHx8ICgh
bWF5YmVUaW1lWm9uZS0+bV96ICYmICFtYXliZVRpbWVab25lLT5tX29mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAvLyBGSVhNRTogcGFyc2UgY2FsZW5k
YXIgYW5ub3RhdGlvbgorICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBQbGFpblRpbWUgdGltZTsKKyAgICAgICAg
aWYgKG1heWJlVGltZSkKKyAgICAgICAgICAgIHRpbWUgPSBtYXliZVRpbWUudmFsdWUoKTsKKwor
ICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG1heWJlVGltZVpvbmUtPm1feiA/IDAgOiAqbWF5YmVU
aW1lWm9uZS0+bV9vZmZzZXQ7CisgICAgICAgIHJldHVybiB7IEV4YWN0VGltZTo6ZnJvbUlTT1Bh
cnRzQW5kT2Zmc2V0KGRhdGUueWVhcigpLCBkYXRlLm1vbnRoKCksIGRhdGUuZGF5KCksIHRpbWUu
aG91cigpLCB0aW1lLm1pbnV0ZSgpLCB0aW1lLnNlY29uZCgpLCB0aW1lLm1pbGxpc2Vjb25kKCks
IHRpbWUubWljcm9zZWNvbmQoKSwgdGltZS5uYW5vc2Vjb25kKCksIG9mZnNldCkgfTsKKyAgICB9
KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwtZm9ybWF0dGltZXpvbmVvZmZzZXRzdHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNl
dFN0cmluZyhpbnQ2NF90IG9mZnNldCkKIHsKQEAgLTk2OSw1ICsxMDAyLDEyOSBAQCBib29sIGlz
VmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24pCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK0V4YWN0VGltZSBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChpbnQzMl90
IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2lnbmVkIGgsIHVuc2lnbmVkIG1pbiwgdW5z
aWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1pY3JvcywgdW5zaWduZWQgbnMsIGludDY0
X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCh5ID49IC05OTk5OTkgJiYgeSA8PSA5OTk5OTkpOwor
ICAgIEFTU0VSVChtb24gPj0gMSAmJiBtb24gPD0gMTIpOworICAgIEFTU0VSVChkID49IDEgJiYg
ZCA8PSAzMSk7CisgICAgQVNTRVJUKGggPj0gMCAmJiBoIDw9IDIzKTsKKyAgICBBU1NFUlQobWlu
ID49IDAgJiYgbWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA+PSAwICYmIHMgPD0gNTkpOworICAg
IEFTU0VSVChtcyA+PSAwICYmIG1zIDw9IDk5OSk7CisgICAgQVNTRVJUKG1pY3JvcyA+PSAwICYm
IG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA+PSAwICYmIG5zIDw9IDk5OSk7CisKKyAg
ICBkb3VibGUgZGF0ZURheXMgPSBkYXRlVG9EYXlzRnJvbTE5NzAoeSwgbW9uIC0gMSwgZCk7Cisg
ICAgZG91YmxlIHRpbWVNcyA9IHRpbWVUb01TKGgsIG1pbiwgcywgbXMpOworICAgIGRvdWJsZSB1
dGNNcyA9IGRhdGVEYXlzICogbXNQZXJEYXkgKyB0aW1lTXM7CisgICAgSW50MTI4IHV0Y05zID0g
c3RhdGljX2Nhc3Q8SW50MTI4Pih1dGNNcykgKiAxJzAwMCcwMDAgKyBtaWNyb3MgKiAxMDAwICsg
bnM7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHV0Y05zIC0gb2Zmc2V0IH07Cit9CisKK3VzaW5n
IENoZWNrZWRJbnQxMjggPSBDaGVja2VkPEludDEyOCwgUmVjb3JkT3ZlcmZsb3c+OworCitzdGF0
aWMgQ2hlY2tlZEludDEyOCBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGRvdWJsZSBuKQorewor
ICAgIC8vIEJhc2VkIG9uIF9fZml4ZGZ0aSgpIGFuZCBfX2ZpeHVuc2RmdGkoKSBmcm9tIGNvbXBp
bGVyX3J0OgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9i
L2YzNjcxZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGli
L2J1aWx0aW5zL2ZwX2ZpeGludF9pbXBsLmluYworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9s
bHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgz
YjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeHVpbnRfaW1wbC5pbmMKKworICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IHNpZ25pZmljYW5kQml0cyA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6ZGlnaXRzIC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBleHBvbmVu
dEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6ZGlnaXRzIC0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZXhw
b25lbnRCaWFzID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXhfZXhwb25lbnQgLSAx
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgaW1wbGljaXRCaXQgPSB1aW50NjRfdCB7
IDEgfSA8PCBzaWduaWZpY2FuZEJpdHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBz
aWduaWZpY2FuZE1hc2sgPSBpbXBsaWNpdEJpdCAtIHVpbnQ2NF90IHsgMSB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbk1hc2sgPSB1aW50NjRfdCB7IDEgfSA8PCAoc2lnbmlm
aWNhbmRCaXRzICsgZXhwb25lbnRCaXRzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IGFic01hc2sgPSBzaWduTWFzayAtIHVpbnQ2NF90IHsgMSB9OworCisgICAgLy8gQnJlYWsgbiBp
bnRvIHNpZ24sIGV4cG9uZW50LCBzaWduaWZpY2FuZCBwYXJ0cy4KKyAgICBjb25zdCB1aW50NjRf
dCBiaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmbik7CisgICAgY29uc3QgdWlu
dDY0X3QgbkFicyA9IGJpdHMgJiBhYnNNYXNrOworICAgIGNvbnN0IGludCBzaWduID0gYml0cyAm
IHNpZ25NYXNrID8gLTEgOiAxOworICAgIGNvbnN0IGludCBleHBvbmVudCA9IChuQWJzID4+IHNp
Z25pZmljYW5kQml0cykgLSBleHBvbmVudEJpYXM7CisgICAgY29uc3QgdWludDY0X3Qgc2lnbmlm
aWNhbmQgPSAobkFicyAmIHNpZ25pZmljYW5kTWFzaykgfCBpbXBsaWNpdEJpdDsKKworICAgIC8v
IElmIGV4cG9uZW50IGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHplcm8uCisgICAgaWYgKGV4
cG9uZW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHsgMCB9OworCisgICAgLy8gSWYgdGhlIHZhbHVl
IGlzIHRvbyBsYXJnZSBmb3IgdGhlIGludGVnZXIgdHlwZSwgb3ZlcmZsb3cuCisgICAgaWYgKGV4
cG9uZW50ID49IDEyOCkKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpSZXN1bHRPdmVyZmxvd2VkIH07
CisKKyAgICAvLyBJZiAwIDw9IGV4cG9uZW50IDwgc2lnbmlmaWNhbmRCaXRzLCByaWdodCBzaGlm
dCB0byBnZXQgdGhlIHJlc3VsdC4KKyAgICAvLyBPdGhlcndpc2UsIHNoaWZ0IGxlZnQuCisgICAg
SW50MTI4IHJlc3VsdCB7IHNpZ25pZmljYW5kIH07CisgICAgaWYgKGV4cG9uZW50IDwgc2lnbmlm
aWNhbmRCaXRzKQorICAgICAgICByZXN1bHQgPj49IHNpZ25pZmljYW5kQml0cyAtIGV4cG9uZW50
OworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0IDw8PSBleHBvbmVudCAtIHNpZ25pZmljYW5kQml0
czsKKyAgICByZXN1bHQgKj0gc2lnbjsKKyAgICByZXR1cm4geyByZXN1bHQgfTsKK30KKworc3Rk
OjpvcHRpb25hbDxFeGFjdFRpbWU+IEV4YWN0VGltZTo6YWRkKER1cmF0aW9uIGR1cmF0aW9uKSBj
b25zdAoreworICAgIEFTU0VSVCghZHVyYXRpb24ueWVhcnMoKSk7CisgICAgQVNTRVJUKCFkdXJh
dGlvbi5tb250aHMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi53ZWVrcygpKTsKKyAgICBBU1NF
UlQoIWR1cmF0aW9uLmRheXMoKSk7CisKKyAgICBDaGVja2VkSW50MTI4IHJlc3VsdE5zIHsgbV9l
cG9jaE5hbm9zZWNvbmRzIH07CisKKyAgICAvLyBUaGUgZHVyYXRpb24ncyBob3VycywgbWludXRl
cywgc2Vjb25kcywgYW5kIG1pbGxpc2Vjb25kcyBzaG91bGQgYmUKKyAgICAvLyBhYmxlIHRvIGJl
IGNhc3QgaW50byBhIDY0LWJpdCBpbnQuIDIqMWU4IDI0LWhvdXIgZGF5cyBpcyB0aGUgbWF4aW11
bQorICAgIC8vIHRpbWUgc3BhbiBmb3IgZXhhY3QgdGltZSwgc28gaWYgd2UgYWxyZWFkeSBrbm93
IHRoYXQgdGhlIGR1cmF0aW9uIGV4Y2VlZHMKKyAgICAvLyB0aGF0LCB0aGVuIHdlIGNhbiBiYWls
IG91dC4KKworICAgIENoZWNrZWRJbnQxMjggaG91cnMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50
MTI4KGR1cmF0aW9uLmhvdXJzKCkpOworICAgIHJlc3VsdE5zICs9IGhvdXJzICogRXhhY3RUaW1l
Ojpuc1BlckhvdXI7CisgICAgQ2hlY2tlZEludDEyOCBtaW51dGVzID0gY2hlY2tlZENhc3REb3Vi
bGVUb0ludDEyOChkdXJhdGlvbi5taW51dGVzKCkpOworICAgIHJlc3VsdE5zICs9IG1pbnV0ZXMg
KiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIENoZWNrZWRJbnQxMjggc2Vjb25kcyA9IGNo
ZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24uc2Vjb25kcygpKTsKKyAgICByZXN1bHRO
cyArPSBzZWNvbmRzICogRXhhY3RUaW1lOjpuc1BlclNlY29uZDsKKyAgICBDaGVja2VkSW50MTI4
IG1pbGxpc2Vjb25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWlsbGlz
ZWNvbmRzKCkpOworICAgIHJlc3VsdE5zICs9IG1pbGxpc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQ
ZXJNaWxsaXNlY29uZDsKKyAgICBDaGVja2VkSW50MTI4IG1pY3Jvc2Vjb25kcyA9IGNoZWNrZWRD
YXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWljcm9zZWNvbmRzKCkpOworICAgIHJlc3VsdE5z
ICs9IG1pY3Jvc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZDsKKyAgICByZXN1
bHROcyArPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkp
OworICAgIGlmIChyZXN1bHROcy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBFeGFjdFRpbWUgcmVzdWx0IHsgcmVzdWx0TnMudmFsdWUoKSB9Owor
ICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitJbnQxMjggRXhhY3RUaW1lOjpyb3VuZChJbnQxMjgg
cXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5n
TW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50MTI4IGluY3JlbWVudE5zIHsgaW5jcmVtZW50
IH07CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IGlu
Y3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJIb3VyOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TWludXRlOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWludXRlOyBi
cmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFj
dFRpbWU6Om5zUGVyU2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlz
ZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZDsgYnJlYWs7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFj
dFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpO
YW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHks
IGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOworfQorCisvLyBEaWZmZXJlbmNlSW5zdGFudCAo
IG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUg
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZGlm
ZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRpbWU6OmRpZmZlcmVuY2UoRXhhY3RUaW1lIG90
aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUg
cm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIEludDEyOCBkaWZmID0gb3RoZXIubV9lcG9jaE5h
bm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIHJldHVybiByb3VuZChkaWZmLCBp
bmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKK0V4YWN0VGltZSBFeGFjdFRpbWU6
OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9k
ZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHJvdW5kKG1f
ZXBvY2hOYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1bml0LCByb3VuZGluZ01vZGUpIH07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGM3NDI0YWU5MzFlZmUxYjUwZGMwYWNkMjJi
ZjIxYjk5NzA5NTZhNmYuLjFjYmI2YjRmZDgwNWQxNTcxMmM5ODViOWRjYzgyNDE3N2VlNzkyNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5o
IgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2Ug
SVNPODYwMSB7CkBAIC03OSw2ICs4MCwxMjIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PGRv
dWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEgeyB9OwogfTsKIAorY2xhc3MgRXhh
Y3RUaW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChFeGFjdFRpbWUpOworcHVibGlj
OgorICAgIGNvbnN0ZXhwciBFeGFjdFRpbWUoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEV4
YWN0VGltZShjb25zdCBFeGFjdFRpbWUmKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGV4cGxp
Y2l0IEV4YWN0VGltZShJbnQxMjggZXBvY2hOYW5vc2Vjb25kcykgOiBtX2Vwb2NoTmFub3NlY29u
ZHMoZXBvY2hOYW5vc2Vjb25kcykgeyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGlt
ZSBmcm9tRXBvY2hTZWNvbmRzKGludDY0X3QgZXBvY2hTZWNvbmRzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaFNlY29uZHMgfSAqIEV4YWN0VGltZTo6bnNQ
ZXJTZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBv
Y2hNaWxsaXNlY29uZHMoaW50NjRfdCBlcG9jaE1pbGxpc2Vjb25kcykKKyAgICB7CisgICAgICAg
IHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWxsaXNlY29uZHMgfSAqIEV4YWN0VGlt
ZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RU
aW1lIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyhpbnQ2NF90IGVwb2NoTWljcm9zZWNvbmRzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaE1pY3Jvc2Vjb25kcyB9
ICogRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIEV4YWN0
VGltZSBmcm9tSVNPUGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhf
dCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1
bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNldCk7CisKKyAgICBjb25z
dGV4cHIgaW50NjRfdCBlcG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2No
TmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgY29uc3Rl
eHByIGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vw
b2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAg
ICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0
X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7Cisg
ICAgfQorICAgIGNvbnN0ZXhwciBJbnQxMjggZXBvY2hOYW5vc2Vjb25kcygpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5v
c2Vjb25kczsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgaW50IG5hbm9zZWNvbmRzRnJhY3Rpb24o
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9lcG9jaE5h
bm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7CisgICAgfQorCisgICAgU3RyaW5n
IGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25kcyA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBhc1N0cmluZ0ltcGwoYnVpbGRlciwgLW1fZXBv
Y2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXNTdHJpbmdJbXBs
KGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxpZEVwb2NoTmFub3NlY29uZHMgKCBlcG9j
aE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcworICAgIGNvbnN0ZXhwciBib29s
IGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25k
cyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vjb25kcyA8PSBFeGFjdFRp
bWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChFeGFj
dFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNv
bmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0K
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0gb3RoZXIubV9lcG9jaE5h
bm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KEV4YWN0VGlt
ZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMg
IT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVyLm1fZXBvY2hOYW5vc2Vj
b25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gYWRkKER1cmF0aW9u
KSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShFeGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVk
IGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNvbnN0OworICAgIEV4YWN0
VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2Rl
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBkYXlSYW5n
ZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAvLyAxZTggZGF5cworICAgIHN0YXRpYyBjb25z
dGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQgeyAxMDAwIH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7IDEnMDAwJzAwMCB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRlID0gbnNQZXJTZWNvbmQgKiA2MDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEludDEyOCBuc1BlckhvdXIgPSBuc1Blck1pbnV0ZSAqIDYwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZhbHVlID0gLWRheVJhbmdlU2Vjb25kcyAqIG5z
UGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1heFZhbHVlID0gZGF5UmFu
Z2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAgICBzdGF0aWMgdm9pZCBhc1N0cmluZ0ltcGwo
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCB2YWx1ZSAvIDEw
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlICUg
MTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50MTI4IHJvdW5kKEludDEyOCBxdWFu
dGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7CisK
KyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRzIHsgfTsKK307CisKIGNsYXNzIFBsYWluVGlt
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1lKTsKIHB1YmxpYzoKQEAg
LTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmcoUGxhaW5UaW1lLCBz
dGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbgogCiBib29sIGlzVmFsaWRE
dXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFy
c2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2M2U5NWJlZjAwNjIwYTMwNmEzYTU1ZjA0YTY1
NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNlNzA4ZDFhMmZmNTg0YjBhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAg
LTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAgIFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0
ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBz
dGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6IHVpbnQ4X3QgeyBOb25lLCBOYXJyb3csIFNo
b3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBFcmEgOiB1aW50OF90IHsgTm9uZSwgTmFycm93
LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgWWVhciA6IHVpbnQ4X3QgeyBOb25lLCBU
d29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggNzU4NGNm
MGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcxY2YzYi4uNmU0ZDYyNWM1MDJmMjBjNDNiZjlk
NjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCisvLyBIYW5kbGVE
YXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQsIHggKQorLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaGFuZGxlZGF0ZXRpbWV2YWx1ZQorZG91Ymxl
IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlm
ICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGF0
ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKworICAgIC8vIEZJWE1FOgorICAg
IC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRlbXBvcmFsIHR5cGVzCisgICAgLy8gIC0gV29y
ayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8vICAtIFJldHVybiBVRGF0ZUZvcm1hdCBhbmQg
VURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCB4KTsK
KyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIGluc3RhbnQtPmV4YWN0VGltZSgpLmVw
b2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFdURjo6
dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmplY3QpKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTAwLDE0ICsxMjIsOCBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNH
bG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVl
IGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJsZSB2YWx1ZTsKLQotICAg
IGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50
b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAgICB2YWx1ZSA9IFdURjo6
dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQorICAgIGRvdWJsZSB2
YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmpl
Y3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdChn
bG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTU2LDE0ICsxNzIsOCBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFy
dHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQi
X3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAg
ZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFs
dWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRl
VGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7
CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xvYmFsT2IKICAgICBpZiAo
c3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3Rh
cnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3Vi
bGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGds
b2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFu
ZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
dGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CkBAIC0yMTIsOSArMjIyLDkgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmlu
ZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlz
IHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVU
aW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVu
ZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUg
ZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxP
YmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1S
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4g
ZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAK
aW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFlZGU1NDMwY2JmMmYyNDFiMi4uNGI1OTZjMjdh
NmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2ICsyMzIsNjIgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFs
dWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVjdCwgdW5zaWduZWRWYWx1
ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3Jl
YXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAgIFVJbnQxMjggdW5zaWduZWRWYWx1ZTsKKyAg
ICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgIHVuc2ln
bmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4PigtKHZhbHVlICsgMSkpICsgMTsKKyAgICAg
ICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIHVuc2lnbmVkVmFsdWUgPSB2YWx1
ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9IFVJTlQ2NF9NQVgpCisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSksIHNpZ24pKTsKKworICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIERpZ2l0IGxvd0JpdHMgPSBzdGF0aWNfY2Fz
dDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICAgICAg
RGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAgICAgICBBU1NFUlQoaGlnaEJpdHMpOworCisg
ICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93Qml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0
RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBiaWdJbnQtPnNldFNpZ24oc2lnbik7CisgICAg
ICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0g
NCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICBEaWdpdCBkaWdpdDEgPSBzdGF0aWNfY2Fz
dDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gMzIpKTsKKyAg
ICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBEaWdpdCBkaWdpdDMgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gOTYpKTsKKworICAg
IEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKworICAgIGludCBsZW5ndGggPSBkaWdpdDMgPyA0
IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChnbG9iYWxPYmpl
Y3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisK
KyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0MCk7CisgICAgYmlnSW50LT5zZXREaWdpdCgx
LCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMiwgZGlnaXQyKTsKKyAgICBpZiAoZGln
aXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDMsIGRpZ2l0Myk7CisgICAgYmlnSW50LT5z
ZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKIEpTQmlnSW50KiBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHZhbHVlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFjMWQ4ZmI2MTAxYWI2OGQ5NzBmMDJiNzFlZGNi
MzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2FlMmExODYxMTYzM2I2ZGE2Nzk0Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUg
PHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNiArNzUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0Kiwg
dWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGludDY0X3QgdmFsdWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVp
bnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNy
ZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQxMjggdmFsdWUpOwogICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGJvb2wgdmFsdWUpOwogICAgIHN0YXRp
YyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSk7CiAK
QEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvVWludDY0SGVhcChKU0Jp
Z0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQsIG1fZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGRhZTliM2E5
YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJjZmYuLjUyMTlmOGY3MjQyYjg2Zjk0MGU4Mjgy
MzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2IEBAIExvY2FsVGltZU9mZnNldCBEYXRlQ2Fj
aGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWlsbGlzZWNvbmRzRnJvbUVwb2NoLCBXVEY6OlRp
CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3RhdGljIGlubGluZSBkb3VibGUgdGltZVRvTVMo
ZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKLXsKLSAgICBy
ZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRz
UGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Ci19Ci0KIGRvdWJsZSBE
YXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYg
dCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogewog
ICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFyKCksIHQubW9udGgoKSwg
dC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA3NGZmMzZkNmI5ZjJiOTE2MzQ3NzcwY2VlZTI5MWU4OGI3YjNh
OWVjLi43ZWM4ZGM2ZTkwYjJmYmUxNGUwMDE4YWYxOTRiYjNhZTg4MmY0Y2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMTAs
NiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQog
ICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAg
ICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGUoaW5p
dC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90eXBlKSk7CisgICAgICAgICAgICB9KTsKKwog
ICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpA
QCAtMjE1Nyw2ICsyMTY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbklt
cGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9j
YWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0
aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW5zdGFudFN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCA5NGUxMmEyM2JiYWIyNTM1OTY3NmQwYjE5Y2JmMjdlYjQyODNi
ZGQ0Li45MGJlYTY3Y2QwODViNzNiZjFkZGQ4ZGVmYzBlOWFiZGI5NDM1YTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMzNCw2ICsz
MzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGltZVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV90aW1lWm9uZVN0cnVj
dHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogY2Fs
ZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2R1cmF0aW9u
U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogaW5zdGFudFN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3Rp
bWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDkzNGJlYjA5YTcwYjc2ZmZh
MmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1NDY2ZDk4ZWZmOWY2NGZkMDk3OWRjOTAwNzQx
YmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1LDMxIEBAIFRlbXBvcmFsRHVyYXRpb24qIFRl
bXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCisvLyBUb0xpbWl0
ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxEdXJhdGlvbkxpa2UsIGRpc2FsbG93ZWRGaWVs
ZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
dG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJh
dGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2Fs
bG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSVNPODYwMTo6RHVyYXRp
b24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghaXNWYWxp
ZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUg
YW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
CisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IGRpc2FsbG93ZWRVbml0cykgeworICAgICAg
ICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJBZGRpbmcgIl9zLCB0ZW1wb3JhbFVuaXRQbHVy
YWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1YmxpY05hbWUoKSwgIiBub3Qgc3VwcG9ydGVkIGJ5
IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3Mp
KTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZy
b20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDgyZjJkNWQ2NWMyMmFjNGM0MDdj
ODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDljZGRkNzc1YjExNWQxN2QxZTFjZWZjMTQyNzdk
NDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAog
ICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b1RlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9MaW1pdGVk
RHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpOwogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0
aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTVmFsdWUg
Y29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hOGU5ODE4NWIyZjJmNDc5YzZiMzA0M2U0ZDg3YTRlNGZiZDFmNGE4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApA
QCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRl
ICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnQpIH07CisK
K1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5z
dGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAg
LCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9y
YWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6
RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7
CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJ
bnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50KHZtLCBzdHJ1Y3R1cmUsIGV4YWN0VGlt
ZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsK
K30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50ICggZXBvY2hOYW5vc2Vjb25kcyBbICwgbmV3
VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5z
dGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084
NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGV4YWN0VGlt
ZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVk
IHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6
IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCitUZW1w
b3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzID0g
dmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoZXBvY2hOYW5vc2Vj
b25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB0b3RhbCA9IGVwb2NoTmFub3Nl
Y29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFj
dFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9i
amVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworICAgIH0KKyNlbmRpZgorCisg
ICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsKKyAgICBJbnQxMjggdG90YWw7CisgICAgaWYg
Y29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KSB7CisgICAgICAgIEludDEy
OCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAg
ICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEp
IDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBiaWdpbnQtPmxlbmd0aCgpID4gMiA/IGJpZ2lu
dC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRvdGFsID0gZDIgPDwgNjQgfCBkMSA8PCAzMiB8
IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDM7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihKU0JpZ0ludDo6RGlnaXQpID09IDgpOwor
ICAgICAgICBJbnQxMjggbG93IHsgYmlnaW50LT5sZW5ndGgoKSA+IDAgPyBiaWdpbnQtPmRpZ2l0
KDApIDogMCB9OworICAgICAgICBJbnQxMjggaGlnaCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8g
YmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAgICAgdG90YWwgPSBoaWdoIDw8IDY0IHwgbG93
OworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisgICAgfQor
ICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCAqIChiaWdpbnQtPnNpZ24o
KSA/IC0xIDogMSkgfTsKKworICAgIGlmIChiaWdJbnRUb29Mb25nIHx8ICFleGFjdFRpbWUuaXNW
YWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZyA9IGJpZ2ludC0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCAxMCk7CisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5n
ID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAgICAgIH0KKworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlbGxpcHNpemVBdCgxMDAs
IGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHRoZSBzdXBw
b3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0
dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisK
Ky8vIFRvVGVtcG9yYWxJbnN0YW50ICggaXRlbSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsaW5zdGFudAorVGVtcG9yYWxJbnN0
YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbEluc3RhbnQ+KHZtKSkKKyAgICAgICAgcmV0dXJu
IGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpOworCisgICAgLy8gRklYTUU6IHdo
ZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5kcworICAgIC8vIGlmIChpdGVtVmFsdWUuaW5o
ZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2bSkpCisgICAgLy8gICAgcmV0dXJuIFRlbXBv
cmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwg
anNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+KGl0ZW1WYWx1ZSktPmVwb2NoVGltZSgpKTsK
KworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGF1dG8g
cGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFyc2VJbnN0YW50KHN0cmluZyk7CisgICAgaWYg
KCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVsbGlwc2l6ZUF0KDEwMCwgc3RyaW5nKSwgIicg
aXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFudCBzdHJpbmciX3MpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlD
cmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFyc2VkRXhhY3RUaW1lLnZhbHVlKCkpKTsKK30K
KworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICggaXRlbSApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb20KK1RlbXBvcmFsSW5z
dGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0YW50Pih2bSkpIHsKKyAg
ICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IGpzQ2FzdDxUZW1wb3JhbEluc3Rh
bnQqPihpdGVtVmFsdWUpLT5leGFjdFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsSW5z
dGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RU
aW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9JbnN0YW50KGdsb2JhbE9iamVjdCwgaXRlbVZh
bHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzICggZXBvY2hT
ZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91
YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBO
dW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaFNlY29uZHMpKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5n
KGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBz
ZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaFNl
Y29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNy
ZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMgKCBlcG9jaE1pbGxpc2Vjb25kcyApCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZy
b21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZy
b21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRv
dWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAgMQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2No
TWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRl
Z2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2
MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRzKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2Jq
ZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNy
b3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pY3Jvc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzVmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZXBvY2hNaWNyb3NlY29u
ZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRvQmlnSW50KGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKGVwb2NoTWljcm9zZWNvbmRzLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IG1pY3Jvc2Vjb25kcyA9IGVwb2NoTWljcm9zZWNvbmRzLmJpZ0ludDMyQXNJbnQzMigpOwor
ICAgICAgICBhdXRvIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlj
cm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAgICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3Ry
dWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorI2VuZGlmCisKKyAgICBKU0JpZ0ludCogYmln
aW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9zZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRv
b0xvbmc7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KQor
ICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisgICAgZWxzZSB7
CisgICAgICAgIEFTU0VSVChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA4KTsKKyAgICAgICAg
YmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAxOworICAgIH0KKyAgICBpbnQ2NF90
IG1pY3Jvc2Vjb25kcyA9IEpTQmlnSW50Ojp0b0JpZ0ludDY0KGJpZ2ludCk7CisgICAgYXV0byBl
eGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNy
b3NlY29uZHMpOworCisgICAgaWYgKGJpZ0ludFRvb0xvbmcgfHwgIWV4YWN0VGltZS5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9i
YWxPYmplY3QsIDEwKTsKKyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAg
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAi
VGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAgICAgfQorCisgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJn
QXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCBy
YW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1
Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hO
YW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2huYW5vc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hOYW5vc2Vjb25kc1ZhbHVl
KQoreworICAgIHJldHVybiB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXBvY2hOYW5v
c2Vjb25kc1ZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5jb21wYXJlICggb25lLCB0
d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
aW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9uZVZhbHVlLCBKU1ZhbHVlIHR3b1ZhbHVl
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG9uZSA9IHRv
SW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiB0d28gPSB0b0luc3RhbnQoZ2xv
YmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpID4gdHdvLT5leGFjdFRpbWUoKSkKKyAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpIDwgdHdvLT5l
eGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKC0xKTsKKyAgICByZXR1cm4ganNO
dW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsSW5zdGFudDo6ZGlmZmVy
ZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbEluc3RhbnQqIG90aGVy
LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3Qs
IG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBU
ZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0
OjpOYW5vc2Vjb25kKTsKKworICAgIFRlbXBvcmFsVW5pdCBkZWZhdWx0TGFyZ2VzdFVuaXQgPSBz
dGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBhdXRvIGxh
cmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9LCBk
ZWZhdWx0TGFyZ2VzdFVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihkZWZhdWx0
TGFyZ2VzdFVuaXQpOworCisgICAgaWYgKHNtYWxsZXN0ICYmIGxhcmdlc3QgJiYgc21hbGxlc3Qg
PCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2Rl
ID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01v
ZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1heEluY3JlbWVudCA9IG1heGltdW1Sb3VuZGluZ0luY3Jl
bWVudChzbWFsbGVzdFVuaXQpOworICAgIEFTU0VSVChtYXhJbmNyZW1lbnQgJiYgKm1heEluY3Jl
bWVudCA8PSAxMDAwKTsgLy8gdW5ib3VuZGVkIGluY3JlbWVudHMgYXJlIGltcG9zc2libGUgd2l0
aCBUZW1wb3JhbC5JbnN0YW50CisgICAgdW5zaWduZWQgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3Vu
ZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heEluY3JlbWVudCwgZmFsc2Up
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBJbnQxMjggcm91
bmRlZERpZmYgPSBleGFjdFRpbWUoKS5kaWZmZXJlbmNlKG90aGVyLT5leGFjdFRpbWUoKSwgaW5j
cmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAgLy8gTk9URTogRHVyYXRp
b24gZmllbGRzIGFyZSBjdXJyZW50bHkgZG91YmxlcywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YK
KyAgICAvLyBuYW5vc2Vjb25kcyBtYXkgbm90IGZpdCBpbiBhIGRvdWJsZS4gVGhpcyBtYXkgbmVl
ZCB0byBjaGFuZ2UgaWYgdGhlCisgICAgLy8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHVy
YXRpb24gY2hhbmdlcy4KKyAgICBBU1NFUlQocm91bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwIDwg
SU5UNjRfTUFYKTsKKyAgICBkb3VibGUgc2Vjb25kcyB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBk
b3VibGUgbmFub3NlY29uZHNSZW1haW5kZXIgeyBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19j
YXN0PGludDY0X3Q+KHJvdW5kZWREaWZmICUgMScwMDAnMDAwJzAwMCkpIH07CisgICAgSVNPODYw
MTo6RHVyYXRpb24gcmVzdWx0IHsgMCwgMCwgMCwgMCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFu
b3NlY29uZHNSZW1haW5kZXIgfTsKKworICAgIFRlbXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVz
dWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGRvdWJs
ZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQpCit7CisgICAgc3dp
dGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJu
IDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHJldHVybiAxNDQwOworICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVybiA4NjQwMDsKKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0ZTc7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6
Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFu
b3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlllYXI6Cisg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVr
OgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6CisgICAgZGVmYXVsdDoKKyAgICAgICAgeyB9
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0lTTzg2MDE6
OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9i
amVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRl
bXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBh
IHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxV
bml0OjpOYW5vc2Vjb25kKTsKKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1w
b3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6SGFs
ZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRv
dWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgbWF4aW11bUluY3JlbWVudChzbWFsbGVzdFVuaXQpLCB0cnVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIGV4YWN0VGltZSgpLnJv
dW5kKGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworfQorCisvLyBUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5
cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2Jq
ZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9TdHJp
bmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB0
aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
aWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGltZVpvbmUgPSBU
ZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9iamVjdCwgdGltZVpvbmVWYWx1ZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgUHJlY2lz
aW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSb3VuZGlu
Z01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3
ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnBy
ZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01v
ZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcodGltZVpvbmUpOworCisgICAgSVNP
ODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7IGV4YWN0VGltZSgpLnJvdW5kKGRhdGEuaW5j
cmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSkgfTsKKworICAgIC8vIEZJWE1FOiBNaXNz
aW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJl
ICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50KHJvdW5kZWROcykuCisgICAgLy8gLi4uCisgICAgLy8g
MS4gSWYgX291dHB1dFRpbWVab25lXyBpcyAqdW5kZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4g
U2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8gISBDcmVhdGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiop
LgorICAgIC8vIDEuIExldCBfaXNvQ2FsZW5kYXJfIGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCku
CisgICAgLy8gMS4gTGV0IF9kYXRlVGltZV8gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRh
dGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9pbnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisg
ICAgSlNPYmplY3QqIG91dHB1dFRpbWVab25lID0gdGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRp
bWVab25lKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklY
TUU6IFRlbXBvcmFsLkluc3RhbnQudG9TdHJpbmcoe3RpbWVab25lfSkgbm90IGltcGxlbWVudGVk
IHlldCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIHRvU3Ry
aW5nKG5ld0V4YWN0VGltZSwgdGltZVpvbmUsIGRhdGEpOworfQorCisvLyBUZW1wb3JhbEluc3Rh
bnRUb1N0cmluZyAoIGluc3RhbnQsIHRpbWVab25lLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9z
dHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKElTTzg2MDE6OkV4YWN0VGlt
ZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24p
Cit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRpbWUgeyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxpc2Vjb25kcygpKSwgTG9jYWxUaW1lT2Zmc2V0
IHsgfSB9OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIC8vIElmIHRoZSB5ZWFy
IGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAxMDAwIGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50
IHRvCisgICAgLy8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisg
ICAgdW5zaWduZWQgeWVhckxlbmd0aCA9IDQ7CisgICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLnll
YXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpIDwgMTAwMCkgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPCAwID8gJy0nIDogJysn
KTsKKyAgICAgICAgeWVhckxlbmd0aCA9IDY7CisgICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFyTGVuZ3RoLCBzdGQ6OmFicyhncmVnb3JpYW5EYXRlVGlt
ZS55ZWFyKCkpKSwKKyAgICAgICAgJy0nLCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5t
b250aCgpICsgMSksCisgICAgICAgICctJywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUu
bW9udGhEYXkoKSksCisgICAgICAgICdUJywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUu
aG91cigpKSwKKyAgICAgICAgJzonLCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5taW51
dGUoKSkpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG5zUGVyU2Vjb25kIHsgMScwMDAn
MDAwJzAwMCB9OworICAgIGludCBmcmFjdGlvbiB7IGV4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0
aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAwKQorICAgICAgICBmcmFjdGlvbiArPSBuc1Bl
clNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KGJ1aWxkZXIsIGdyZWdvcmlh
bkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsKKworICAgIGlmICh0aW1l
Wm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVzIG9uIFRpbWVab25lOgor
ICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVTdHJpbmdfIGJlID8gQnVpbHRpblRpbWVab25l
R2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8sIF9pbnN0YW50XykuCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7
CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5MzdjN2VmYTNhZDQwNTZjMzliYTEyNmEzOWFkOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YWNrZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsSW5zdGFudFNwYWNlPG1vZGU+
KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgSVNPODYwMTo6RXhhY3RUaW1lKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50
KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiwgSVNPODYwMTo6RXhhY3RUaW1lLCBT
dHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3Jl
YXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFN0cnVjdHVyZSogPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFRlbXBv
cmFsSW5zdGFudCogdG9JbnN0YW50KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIFRlbXBvcmFsSW5zdGFudCogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAg
IHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWxsaXNl
Y29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50KiBmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAg
ICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRp
bWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGltZS5nZXQoKTsgfQorCisgICAgSVNPODYwMTo6
RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsSW5zdGFudCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIHJvdW5kKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0
cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxscHRyLCBQcmVjaXNpb25EYXRhIHByZWNpc2lv
biA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAx
IH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9TdHJpbmcoZXhhY3RUaW1lKCksIHRp
bWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3Rh
bnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpFeGFjdFRpbWUpOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAx
OjpFeGFjdFRpbWU+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsK
KyAgICBzdGF0aWMgSVNPODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCopOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhJU084NjAxOjpFeGFj
dFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7CisKKyAgICBQYWNrZWQ8
SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4YWN0VGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYTQyODBhMWNlNjcwOTBhNjc4
MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwx
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29u
ZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jv
c2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsK
KworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlCisg
IGZyb20gICAgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaFNlY29u
ZHMgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pbGxpc2Vjb25kcyAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZy
b21FcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVw
b2NoTmFub3NlY29uZHMgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAg
ICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3RvciogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUp
Cit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgaW5zdGFudFByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1
Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxJbnN0YW50
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5z
dGFudCk7CisKK1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0YW50LCBjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpCit7
Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiSW5zdGFudCJfcywgUHJvcGVydHlBZGRpdGlv
bk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBpbnN0YW50UHJvdG90
eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgaW5zdGFudFByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1w
b3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJn
ZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIGluc3RhbnRTdHJ1Y3R1cmUs
IG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5J
bnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIHN0cnVjdHVyZSkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0
aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnN0YW50IikpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29u
ZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hN
aWxsaXNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNv
bmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNkZWRlMmEyMTg5NWE4ZjJmNjk4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlOworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5j
dGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGlj
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDk4Y2FiYjIwMDU0NWJkNDdhNTQy
MmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDMyNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
RnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVy
RXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlj
cm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMpOworCit9CisKKyNpbmNsdWRlICJU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3Jh
bC5JbnN0YW50IiwgJkJhc2U6OnNfaW5mbywgJmluc3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8q
IFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFu
dFByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0
cmFjdCAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwgICAgICAgICAgICAgIHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIHNpbmNlICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2lu
Y2UgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAg
ICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1JvdW5kICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRvU3Ry
aW5nICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xv
Y2FsZVN0cmluZyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAg
ICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMAorICBlcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vz
c29yCisgIGVwb2NoTWlsbGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBv
Y2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9z
ZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNv
bmRzICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUqIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25z
dGV4cHIgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0
aW9uVW5pdHMgPSB7CisgICAgVGVtcG9yYWxVbml0OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6
TW9udGgsCisgICAgVGVtcG9yYWxVbml0OjpXZWVrLAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAor
fTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFu
dCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmFkZCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSVNPODYwMTo6
RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVu
aXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0
VGltZSgpLmFkZChkdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRl
IG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
Km5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
VGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
SW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxE
dXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBu
ZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAgICBp
ZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBU
ZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCAqbmV3RXhhY3RUaW1lKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGls
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0
YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAg
SVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5zdGFudC0+ZGlmZmVyZW5jZShnbG9iYWxPYmpl
Y3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNp
bmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgPSBvdGhlci0+ZGlmZmVyZW5jZShnbG9i
YWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJl
c3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0
YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90
b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKwor
ICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9w
dGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIHJlcXVp
cmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5l
d0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0
cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFs
SW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQtPmV4YWN0VGltZSgpID09IG90aGVyLT5leGFj
dFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZygg
WyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5z
dGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5z
dGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKCkpKSk7Cit9CisK
Ky8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBhIEpTQnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5n
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBJbnRsRGF0
ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBmb3JtYXR0ZXItPmluaXRpYWxpemVEYXRlVGlt
ZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGltZUZvcm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vj
b25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1h
dHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxs
aXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlw
ZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywg
dXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfcyk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RU
aW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3Rh
bnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUu
ZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RU
aW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9iYWxPYmplY3QsIGluc3RhbnQt
PmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRzKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRz
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRp
bWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIxNDY5ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJk
Nzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZShWTSYsIFN0cnVjdHVy
ZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCmluZGV4IGZmMGJjZmRjZjgyZDIyMWQxZWNiODVhOGMxYjQ2YjY1MWI0ZGI3MzUuLjg5NDZh
MGNjNjEwNDg0Zjg4MjRmNWNmZGU3Y2Y0YjczOTg1YzlkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAgLTMyLDExICszMiwxNCBA
QAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKKyNp
bmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2
ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSks
IGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlv
blN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNW
YWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQor
eworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9i
amVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBv
cmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmlu
c3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGlj
IEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2Jq
ZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1w
b3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
QGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAgQ2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5k
YXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9u
ICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlD
YWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IgICAgICAg
IERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2Jq
ZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGlt
ZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlD
YWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAg
IERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAgLTM3NCw2ICszODUsMTcgQEAgdm9pZCBmb3Jt
YXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQg
ZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8vIEZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0ICgg
c2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQsIHByZWNpc2lvbiAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1mb3Jt
YXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVj
aXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBpZiAocHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9y
YWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVybjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCc6
JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9u
KGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24ucHJlY2lzaW9uKTsKK30KKwogLy8gTWF4aW11
bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVy
YXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3Vu
ZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkKQEAgLTQzNSw2ICs0NTcsNDMgQEAgZG91
YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJv
dW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
K3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQoreworICAgIHJldHVybiB4IDwgMCA/IC14IDog
eDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggSW50MTI4CitJbnQxMjggcm91bmRO
dW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2Rl
IG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9PSAxKQorICAgICAgICByZXR1cm4geDsKKwor
ICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNyZW1lbnQ7CisgICAgSW50MTI4IHJlbWFpbmRl
ciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFyZW1haW5kZXIpCisgICAgICAgIHJldHVybiB4
OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVyIDwgMDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgaWYgKCFzaWduKQorICAgICAg
ICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgIHF1b3RpZW50LS07CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIC8vICJoYWxmIHVw
IGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAoYWJzKHJlbWFpbmRlciAqIDIpID49IGluY3Jl
bWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9IHNpZ24gPyAtMSA6IDE7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGllbnQgKiBpbmNyZW1lbnQ7Cit9CisKIFRlbXBv
cmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAgIHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFs
T3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3Bl
cnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmgKaW5kZXggNzkxNTc5OGNkYjk4YWI3NDU4M2I4YzhhYzM2YTU1ZDFiNDVm
MWMxNC4uYWIzYjI5MzNmNTNhOGNhNmQ2NjFkMjZmNmQ3MTliNzc5YzJkNjQwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yMiw2ICsy
Miw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5j
bHVkZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTA1LDkgKzEwNiwx
MSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0ZW1wb3JhbEZyYWN0aW9uYWxTZWNvbmREaWdp
dHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAogUHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5n
UHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMpOwogUm91bmRpbmdN
b2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBSb3Vu
ZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRl
ciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+KTsK
K3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIHNl
Y29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNpc2lvbkRhdGEpOwogc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRl
bXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9u
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1c2l2ZSk7CiBkb3Vi
bGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5k
aW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjgsIEludDEyOCBp
bmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVudW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6
IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCAyZmFjNzM0MzU0ODllYjcwZDRkOTZlOGQyOWIzNGJkM2I2OGRiOGNmLi45Y2Y1ZmVhMDE5
ODQ5ZGI2ZTY2MDkxMGJiOTQ1MWNkMjdjMjVmYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlv
bi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxh
aW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RS
dW5uZXJVdGlscy5oIgpAQCAtMTU5Nyw2ICsxNTk4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxE
dXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxJbnN0YW50KQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1l
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxhaW5UaW1lKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGJkZjQzMWU4NGVmMDk0ODU2YmMwMjczMGM0MGZmZTZlZGFhNWMxZDYuLjZmZTQ2NzQwNWJiYjQ3
NGVjMjIzZDY5YjQ4MWIxOGQ2ZjBhZDNkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMTg3LDYgKzE4Nyw3IEBAIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9s
OwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2NsYXNzIFRlbXBvcmFsSW5zdGFudDsKIGNsYXNz
IFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBV
bmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MDEsNiArNjAyLDcgQEAgcHVibGljOgogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENh
bGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaAppbmRleCBlZmFiNGFkM2JjOWY3MGQ2N2ViNjIzZDA3MzE2MTA5Mjk5OGQzZTM0Li5m
ZjBlZjY4ZjRkNTdiYjA0NTE2YThjYWIwZWM2YjY2NzJlOGM2N2YzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmgKQEAgLTMzOCwxMiArMzM4LDIwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
SFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNP
cGVyCiAgICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJl
c3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVTRShNVUxf
T1ZFUkZMT1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRp
bl9tdWxfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQor
ICAgICAgICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gZm9yIF9faW50MTI4X3Qgb24gQ2xhbmcv
TGludXguCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDA0CisjaWYgQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKQorICAgICAgICBpZiBj
b25zdGV4cHIgKHNpemVvZihSZXN1bHRUeXBlKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5k
aWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0
aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2lmIENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5VWCkKKyAgICAgICAgfQorI2VuZGlm
IC8vIENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5VWCkKKyNlbmRpZiAvLyBVU0UoTVVMX09WRVJG
TE9XKQogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAgICAgIGlm
IChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgJiYgKHN0ZDo6bnVtZXJpY19s
aW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC8gbGhzKSA8IHJocykKQEAgLTM2NSw3ICszNzMsNiBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5
cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGxo
cyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0
aWMgaW5saW5lIGJvb2wgZGl2aWRlKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3Vs
dCkgV0FSTl9VTlVTRURfUkVUVVJOCkBAIC00MjAsMTIgKzQyNywyMCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0
aG1ldGljT3BlcgogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShMSFMgbGhzLCBSSFMg
cmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICNpZiBV
U0UoTVVMX09WRVJGTE9XKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChf
X2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBidWlsdGluIGZvciBfX2ludDEyOF90IG9u
IENsYW5nL0xpbnV4LgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQwNAorI2lmIENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5VWCkKKyAgICAg
ICAgaWYgY29uc3RleHByIChzaXplb2YoUmVzdWx0VHlwZSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSkg
eworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAo
X19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNpZiBDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpCisgICAgICAgIH0K
KyNlbmRpZiAvLyBDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpCisjZW5kaWYgLy8gVVNFKE1V
TF9PVkVSRkxPVykKICAgICAgICAgaWYgKCFsaHMgfHwgIXJocykgewogICAgICAgICAgICAgcmVz
dWx0ID0gMDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDM0LDcgKzQ0OSw2IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4g
c3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJlc3VsdCA9IGxocyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9
CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZGl2aWRlKExIUyBsaHMsIFJIUyByaHMsIFJlc3Vs
dFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCBkZTBiNDVi
ZDBhODhlYWJhNDY2YjZlNmMwYWQ2NmRjMDJmNTI1NzQxLi43YmIyN2U5OTc2ZmIxNGUwNmZhNGVl
NDg1NTM2MTdmY2EwNmQ4ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM4OCw2ICszODgsMTEgQEAgaW5s
aW5lIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZ
ZWFyKQogICAgIHJldHVybiBkIC0gc3RlcDsKIH0KIAoraW5saW5lIGRvdWJsZSB0aW1lVG9NUyhk
b3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQoreworICAgIHJl
dHVybiAoKChob3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQ
ZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKK30KKwogLy8gUmV0dXJu
cyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JU
X1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUg
dXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKQEAgLTQxMCw2ICs0MTUs
NyBAQCB1c2luZyBXVEY6Om1zVG9Ib3VyczsKIHVzaW5nIFdURjo6c2Vjb25kc1BlckRheTsKIHVz
aW5nIFdURjo6c2Vjb25kc1Blck1pbnV0ZTsKIHVzaW5nIFdURjo6cGFyc2VEYXRlRnJvbU51bGxU
ZXJtaW5hdGVkQ2hhcmFjdGVyczsKK3VzaW5nIFdURjo6dGltZVRvTVM7CiB1c2luZyBXVEY6Om1h
a2VSRkMyODIyRGF0ZVN0cmluZzsKIHVzaW5nIFdURjo6TG9jYWxUaW1lT2Zmc2V0OwogdXNpbmcg
V1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9JbnQxMjguaCBiL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCmluZGV4IDNiZGIwYTQ1ZWY1YzQ5
YWZlZTJiOWRkZmQzMGE4YWMyNTIwZDYzZmEuLjk0OGYyMzg0NmM0NjcwOTM0OTJhNGNiYWU3ZmVi
MWNhZjcxNDYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ludDEyOC5oCkBAIC0xMCw3ICsxMCw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0xlYWRpbmdaZXJvQml0Q291
bnQuaD4KIApAQCAtMzYsNiArMzgsODUgQEAgcHVibGljOgogICAgICAgICA6IGxvd18ge3N0YXRp
Y19jYXN0PHN0ZDo6dWludDY0X3Q+KG4pfQogICAgICAgICAsIGhpZ2hfIHstc3RhdGljX2Nhc3Q8
c3RkOjp1aW50NjRfdD4obiA8IDApfQogICAgIHsgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJ
bnQxMjhJbXBsKGRvdWJsZSBuKQorICAgIHsKKyAgICAgICAgLy8gQmFzZWQgb24gX19maXhkZnRp
KCkgYW5kIF9fZml4dW5zZGZ0aSgpIGZyb20gY29tcGlsZXJfcnQ6CisgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0
MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeGludF9p
bXBsLmluYworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3Qv
YmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0
L2xpYi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwuaW5jCisKKyAgICAgICAgY29uc3RleHByIHVu
c2lnbmVkIHR5cGVXaWR0aCA9IDEyODsKKyAgICAgICAgY29uc3RleHByIGludCBzaWduaWZpY2Fu
ZEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyAtIDE7CisgICAgICAg
IGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnVp
bnQ2NF90Pjo6ZGlnaXRzIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHM7Cisg
ICAgICAgIGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaWFzID0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXhfZXhwb25lbnQgLSAxOworICAgICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRf
dCBpbXBsaWNpdEJpdCA9IHN0ZDo6dWludDY0X3QgeyAxIH0gPDwgc2lnbmlmaWNhbmRCaXRzOwor
ICAgICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRfdCBzaWduaWZpY2FuZE1hc2sgPSBpbXBsaWNp
dEJpdCAtIHN0ZDo6dWludDY0X3QgeyAxIH07CisgICAgICAgIGNvbnN0ZXhwciBzdGQ6OnVpbnQ2
NF90IHNpZ25NYXNrID0gc3RkOjp1aW50NjRfdCB7IDEgfSA8PCAoc2lnbmlmaWNhbmRCaXRzICsg
ZXhwb25lbnRCaXRzKTsKKyAgICAgICAgY29uc3RleHByIHN0ZDo6dWludDY0X3QgYWJzTWFzayA9
IHNpZ25NYXNrIC0gc3RkOjp1aW50NjRfdCB7IDEgfTsKKworICAgICAgICBpZiAoIW4pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3Qgc3RkOjp1aW50NjRfdCBiaXRzID0gZG91
YmxlQXNCaXRzKG4pOworICAgICAgICBjb25zdCBzdGQ6OnVpbnQ2NF90IG5BYnMgPSBiaXRzICYg
YWJzTWFzazsKKworICAgICAgICAvLyBCcmVhayBuIGludG8gc2lnbiwgZXhwb25lbnQsIHNpZ25p
ZmljYW5kIHBhcnRzLgorICAgICAgICBjb25zdCBpbnQgc2lnbiA9IGJpdHMgJiBzaWduTWFzayA/
IC0xIDogMTsKKyAgICAgICAgY29uc3QgaW50IGV4cG9uZW50ID0gKG5BYnMgPj4gc2lnbmlmaWNh
bmRCaXRzKSAtIGV4cG9uZW50QmlhczsKKyAgICAgICAgY29uc3Qgc3RkOjp1aW50NjRfdCBzaWdu
aWZpY2FuZCA9IChuQWJzICYgc2lnbmlmaWNhbmRNYXNrKSB8IGltcGxpY2l0Qml0OworCisgICAg
ICAgIC8vIElmIGV4cG9uZW50IGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHplcm8uCisgICAg
ICAgIGlmIChleHBvbmVudCA8IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8g
SWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlIGFuZCB0aGlzIHR5cGUgaXMgdW5zaWduZWQsIHRoZSBy
ZXN1bHQgaXMgMC4KKyAgICAgICAgaWYgY29uc3RleHByICghSVNfU0lHTkVEKSB7CisgICAgICAg
ICAgICBpZiAoc2lnbiAhPSAxKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNob3J0Y3V0OiB1c2UgdGhlIG5hdGl2ZSBkb3VibGUtPmludDY0IGNvbnZl
cnNpb24gaWYgcG9zc2libGUuCisgICAgICAgIGlmIChleHBvbmVudCA8IDY0KSB7CisgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKElTX1NJR05FRCkgeworICAgICAgICAgICAgICAgIGxvd18gPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4obikpOworICAgICAgICAg
ICAgICAgIGhpZ2hfID0gLXN0YXRpY19jYXN0PHVpbnQ2NF90PihuIDwgMCk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsb3dfID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIHZh
bHVlIGlzIHRvbyBsYXJnZSBmb3IgdGhlIGludGVnZXIgdHlwZSwgc2F0dXJhdGUuCisgICAgICAg
IC8vIChOb3RlLCB0aGlzIGJlaGF2aW91ciBpcyBkaWZmZXJlbnQgZnJvbSBuYXRpdmUgX19pbnQx
MjguKQorICAgICAgICBpZiAoZXhwb25lbnQgPj0gdHlwZVdpZHRoKSB7CisgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKElTX1NJR05FRCkgeworICAgICAgICAgICAgICAgIGlmIChzaWduID09IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgSW50MTI4SW1wbCBtYXggPSAofkludDEyOEltcGwgeyAw
IH0pIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgbG93XyA9IG1heC5sb3dfOworICAgICAgICAg
ICAgICAgICAgICBoaWdoXyA9IG1heC5oaWdoXzsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBJbnQxMjhJbXBsIG1pbiA9IC0oKH5JbnQxMjhJbXBsIHsgMCB9
KSAvIDIpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgbG93XyA9IG1pbi5sb3dfOworICAgICAg
ICAgICAgICAgICAgICBoaWdoXyA9IG1pbi5oaWdoXzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsb3dfID0gaGlnaF8gPSAweGZmZmYnZmZm
ZidmZmZmJ2ZmZmY7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiAwIDw9IGV4cG9uZW50IDwgc2lnbmlmaWNhbmRCaXRzLCByaWdodCBzaGlmdCB0byBnZXQg
dGhlIHJlc3VsdC4KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBzaGlmdCBsZWZ0LgorICAgICAgICBJ
bnQxMjhJbXBsIHJlc3VsdCB7IHNpZ25pZmljYW5kIH07CisgICAgICAgIGlmIChleHBvbmVudCA8
IHNpZ25pZmljYW5kQml0cykKKyAgICAgICAgICAgIHJlc3VsdCA+Pj0gc2lnbmlmaWNhbmRCaXRz
IC0gZXhwb25lbnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA8PD0gZXhwb25l
bnQgLSBzaWduaWZpY2FuZEJpdHM7CisgICAgICAgIHJlc3VsdCAqPSBzaWduOworCisgICAgICAg
IGxvd18gPSByZXN1bHQubG93XzsKKyAgICAgICAgaGlnaF8gPSByZXN1bHQuaGlnaF87CisgICAg
fQorCisgICAgY29uc3RleHByIEludDEyOEltcGwoY29uc3QgSW50MTI4SW1wbDwhSVNfU0lHTkVE
PiBuKQorICAgICAgICA6IGxvd18geyBuLmxvdygpIH0sIGhpZ2hfIHsgbi5oaWdoKCkgfSB7IH0K
ICAgICBjb25zdGV4cHIgSW50MTI4SW1wbChjb25zdCBJbnQxMjhJbXBsICYpID0gZGVmYXVsdDsK
ICAgICBjb25zdGV4cHIgSW50MTI4SW1wbChJbnQxMjhJbXBsICYmKSA9IGRlZmF1bHQ7CiAgICAg
Y29uc3RleHByIEludDEyOEltcGwgJm9wZXJhdG9yPShjb25zdCBJbnQxMjhJbXBsICYpID0gZGVm
YXVsdDsKQEAgLTQ5LDYgKzEzMCwyOCBAQCBwdWJsaWM6CiAgICAgY29uc3RleHByIGV4cGxpY2l0
IG9wZXJhdG9yIHN0ZDo6dWludDY0X3QoKSBjb25zdCB7IHJldHVybiBsb3dfOyB9CiAgICAgY29u
c3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIHN0ZDo6aW50NjRfdCgpIGNvbnN0IHsgcmV0dXJuIGxv
d187IH0KICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgaW50KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50Pihsb3dfKTsgfQorICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVy
YXRvciBkb3VibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVHJpdmlhbCBjYXNlLgorICAg
ICAgICBpZiAoIWhpZ2hfICYmICFsb3dfKQorICAgICAgICAgICAgcmV0dXJuIDAuMDsKKworICAg
ICAgICAvLyBGSVhNRTogU2xvdyBpbXBsZW1lbnRhdGlvbiB1c2luZyBzdGQ6OmxkZXhwKCkgd2hp
bGUgc29ydGluZyBvdXQgYnVncworICAgICAgICAvLyBpbiB0aGUgaW50MTI4IGltcGxlbWVudGF0
aW9uLiBUaGlzIGlzIGJhc2VkIG9uIHRoZSBvbmUgaW4gQWJzZWlsLgorICAgICAgICBpZiBjb25z
dGV4cHIgKElTX1NJR05FRCkgeworICAgICAgICAgICAgLy8gV2UgbXVzdCBjb252ZXJ0IHRoZSBh
YnNvbHV0ZSB2YWx1ZSBhbmQgdGhlbiBuZWdhdGUgYXMgbmVlZGVkLCBiZWNhdXNlCisgICAgICAg
ICAgICAvLyBmbG9hdGluZyBwb2ludCB0eXBlcyBhcmUgdHlwaWNhbGx5IHNpZ24tbWFnbml0dWRl
LiBPdGhlcndpc2UsIHRoZQorICAgICAgICAgICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBo
aWdoIGFuZCBsb3cgNjQgYml0cyB3aGVuIGludGVycHJldGVkIGFzIHR3bydzCisgICAgICAgICAg
ICAvLyBjb21wbGVtZW50IG92ZXJ3aGVsbXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgbWFudGlzc2Eu
CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQWxzbyBjaGVjayB0byBtYWtlIHN1cmUg
d2UgZG9uJ3QgbmVnYXRlIEludDEyOE1pbigpCisgICAgICAgICAgICByZXR1cm4gKGhpZ2hfICYg
dG9wQml0KSAmJiAoaGlnaF8gIT0gMVVMIDw8IDYzICYmIGxvd18pCisgICAgICAgICAgICAgICAg
PyAtc3RhdGljX2Nhc3Q8ZG91YmxlPigtKnRoaXMpCisgICAgICAgICAgICAgICAgOiBzdGF0aWNf
Y2FzdDxkb3VibGU+KGxvd18pICsgc3RkOjpsZGV4cChzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRp
Y19jYXN0PGludDY0X3Q+KGhpZ2hfKSksIDY0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KGxvd18pICsgc3RkOjpsZGV4cChzdGF0aWNfY2FzdDxkb3Vi
bGU+KGhpZ2hfKSwgNjQpOworICAgIH0KIAogICAgIGNvbnN0ZXhwciBzdGQ6OnVpbnQ2NF90IGhp
Z2goKSBjb25zdCB7IHJldHVybiBoaWdoXzsgfQogICAgIGNvbnN0ZXhwciBzdGQ6OnVpbnQ2NF90
IGxvdygpIGNvbnN0IHsgcmV0dXJuIGxvd187IH0KQEAgLTI1Niw2ICszNTksMjIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiA2NCArIGxlYWRpbmdaZXJvQml0Q291bnQobG93Xyk7CiAg
ICAgICAgIHJldHVybiBsZWFkaW5nWmVyb0JpdENvdW50KGhpZ2hfKTsKICAgICB9CisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgc3RkOjp1aW50NjRfdCBkb3VibGVBc0JpdHMoZG91YmxlIGQp
CisgICAgeworICAgICAgICBjb25zdCB1bmlvbiB7CisgICAgICAgICAgICBkb3VibGUgZDsKKyAg
ICAgICAgICAgIHN0ZDo6dWludDY0X3QgdTsKKyAgICAgICAgfSBiaXRzID0geyAuZCA9IGQgfTsK
KyAgICAgICAgcmV0dXJuIGJpdHMudTsKKyAgICB9CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4
cHIgZG91YmxlIGJpdHNBc0RvdWJsZShzdGQ6OnVpbnQ2NF90IHUpCisgICAgeworICAgICAgICBj
b25zdCB1bmlvbiB7CisgICAgICAgICAgICBkb3VibGUgZDsKKyAgICAgICAgICAgIHN0ZDo6dWlu
dDY0X3QgdTsKKyAgICAgICAgfSBiaXRzID0geyAudSA9IHUgfTsKKyAgICAgICAgcmV0dXJuIGJp
dHMuZDsKKyAgICB9CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnVpbnQ2NF90IHRvcEJpdCB7
c3RkOjp1aW50NjRfdCB7MX0gPDwgNjN9OwogICAgIHN0ZDo6dWludDY0X3QgbG93XyB7MH0sIGhp
Z2hfIHswfTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggY2YzZTA0ZWFhZDY1NTZkZTdiMzIyNjM1ODNiZmMzYTc5N2YwZTJhNy4uMmNkZDk3
YmJjMTNiMDI1MjA1NWZjZGJkZGNiNjVlNDA0YWUzNmYxMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEwLTIx
ICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9AZ21haWwuY29tPgorCisgICAgICAg
IFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludDEy
OC5jcHA6IEFkZCB0ZXN0cyBmb3IgY29udmVyc2lvbiB0byBhbmQKKyAgICAgICAgICBmcm9tIGRv
dWJsZSwgYWRhcHRlZCBmcm9tIENsYW5nJ3MgY29tcGlsZXJfcnQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpNYWtlSW50MTI4KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok1ha2VVSW50MTI4
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkSW1w
bCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVk
SW1wbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZEltcGwpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWRJbXBsKToKKwogMjAyMS0xMC0xOSAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHNjbXB5
XSBPdmVycmlkZSBodHRwIHVybCB3aXRoIHNzaCB1cmwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ludDEyOC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9JbnQxMjguY3BwCmluZGV4IDc3NWJmNzExOTQwZGQ0MjJmZjQ3MjFiNGNkYmM1ZTdmYTc2
M2Y0MmMuLjM0N2I2MmEyMjRjNTcwMTYxZmUwYzljNGUwNTdmOWVkMGE1ZWZmNzUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludDEyOC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50MTI4LmNwcApAQCAtNCwxNyArNCwzNiBAQAogCiAv
LyBCYXNlZCBvbjoKIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9i
L2Q0ODBmOTY4L2ZsYW5nL3VuaXR0ZXN0cy9FdmFsdWF0ZS91aW50MTI4LmNwcAorLy8gaHR0cHM6
Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2Jsb2IvZjM2NzFkZTUvY29tcGlsZXItcnQv
dGVzdC9idWlsdGlucy9Vbml0L2ZpeGRmdGlfdGVzdC5jCisvLyBodHRwczovL2dpdGh1Yi5jb20v
bGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNS9jb21waWxlci1ydC90ZXN0L2J1aWx0aW5z
L1VuaXQvZml4dW5zZGZ0aV90ZXN0LmMKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0t
cHJvamVjdC9ibG9iL2YzNjcxZGU1L2NvbXBpbGVyLXJ0L3Rlc3QvYnVpbHRpbnMvVW5pdC9mbG9h
dHRpZGZfdGVzdC5jCisvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxv
Yi9mMzY3MWRlNS9jb21waWxlci1ydC90ZXN0L2J1aWx0aW5zL1VuaXQvZmxvYXR1bnRpZGZfdGVz
dC5jCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKICNp
bmNsdWRlIDxjaW50dHlwZXM+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8bGltaXRzPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHVzaW5nIE5vbk5hdGl2ZUludDEyOCA9IFdU
Rjo6SW50MTI4SW1wbDx0cnVlPjsKIHVzaW5nIE5vbk5hdGl2ZVVJbnQxMjggPSBXVEY6OkludDEy
OEltcGw8ZmFsc2U+OwogCitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhTYWZlSW50ZWdlciA9
IDB4MS5mZmZmZmZmZmZmZmZmcCs1MjsgLy8gbGFzdCBmbG9hdGluZyBwb2ludCB2YWx1ZSB0aGF0
IGNvcnJlc3BvbmRzIHRvIG9ubHkgb25lIGludGVnZXIKK3N0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBtYXhTYWZlSW50ZWdlcjY0ID0gOTAwNzE5OTI1NDc0MDk5MTsKKworc3RhdGljIGNvbnN0ZXhw
ciBOb25OYXRpdmVJbnQxMjggTWFrZUludDEyOChzdGQ6OmludDY0X3QgaGlnaCwgc3RkOjp1aW50
NjRfdCBsb3cpCit7CisgICAgcmV0dXJuIE5vbk5hdGl2ZUludDEyOCB7IE5vbk5hdGl2ZVVJbnQx
MjggeyBoaWdoIH0gPDwgNjQgfCBsb3cgfTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBOb25OYXRp
dmVVSW50MTI4IE1ha2VVSW50MTI4KHN0ZDo6dWludDY0X3QgaGlnaCwgc3RkOjp1aW50NjRfdCBs
b3cpCit7CisgICAgcmV0dXJuIE5vbk5hdGl2ZVVJbnQxMjggeyBoaWdoIH0gPDwgNjQgfCBsb3c7
Cit9CisKIHN0YXRpYyB2b2lkIFRlc3RVbmFyeShzdGQ6OnVpbnQ2NF90IHgpCiB7CiAgICAgTm9u
TmF0aXZlVUludDEyOCBuIHsgeCB9OwpAQCAtNjQsNiArODMsMjY3IEBAIFRFU1QoV1RGX0ludDEy
OCwgQmFzaWMpCiAgICAgfQogfQogCitzdGF0aWMgdm9pZCBUZXN0Q29udmVydEZyb21GbG9hdFNp
Z25lZEltcGwoZG91YmxlIGEsIE5vbk5hdGl2ZUludDEyOCBleHBlY3RlZCwgY29uc3QgY2hhciog
YVN0ciwgY29uc3QgY2hhciogZXhwZWN0ZWRTdHIpCit7CisgICAgTm9uTmF0aXZlSW50MTI4IHgg
eyBhIH07CisgICAgRVhQRUNUX0VRKHgsIGV4cGVjdGVkKSA8PCAiY29udmVydCAiIDw8IGFTdHIg
PDwgIiB0byBzaWduZWQgaW50MTI4LCBleHBlY3RlZCAiIDw8IGV4cGVjdGVkU3RyOworfQorCitz
dGF0aWMgdm9pZCBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkSW1wbChkb3VibGUgYSwgTm9u
TmF0aXZlVUludDEyOCBleHBlY3RlZCwgY29uc3QgY2hhciogYVN0ciwgY29uc3QgY2hhciogZXhw
ZWN0ZWRTdHIpCit7CisgICAgTm9uTmF0aXZlVUludDEyOCB4IHsgYSB9OworICAgIEVYUEVDVF9F
USh4LCBleHBlY3RlZCkgPDwgImNvbnZlcnQgIiA8PCBhU3RyIDw8ICIgdG8gdW5zaWduZWQgaW50
MTI4LCBleHBlY3RlZCAiIDw8IGV4cGVjdGVkU3RyOworfQorCisjZGVmaW5lIFRlc3RDb252ZXJ0
RnJvbUZsb2F0U2lnbmVkKGEsIGV4cGVjdGVkKSBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZElt
cGwoYSwgZXhwZWN0ZWQsICNhLCAjZXhwZWN0ZWQpOworI2RlZmluZSBUZXN0Q29udmVydEZyb21G
bG9hdFVuc2lnbmVkKGEsIGV4cGVjdGVkKSBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkSW1w
bChhLCBleHBlY3RlZCwgI2EsICNleHBlY3RlZCk7CisKK1RFU1QoV1RGX0ludDEyOCwgQ29udmVy
c2lvbkZyb21GbG9hdGluZ1BvaW50KQoreworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVk
KDAuMCwgMCk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgwLjUsIDApOworICAg
IFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKDAuOTksIDApOworICAgIFRlc3RDb252ZXJ0RnJv
bUZsb2F0U2lnbmVkKDEuMCwgMSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMS41
LCAxKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgxLjk5LCAxKTsKKyAgICBUZXN0
Q29udmVydEZyb21GbG9hdFNpZ25lZCgyLjAsIDIpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0
U2lnbmVkKDIuMDEsIDIpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0wLjUsIDAp
OworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0wLjk5LCAwKTsKKyAgICBUZXN0Q29u
dmVydEZyb21GbG9hdFNpZ25lZCgtMS4wLCAtMSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRT
aWduZWQoLTEuNSwgLTEpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0xLjk5LCAt
MSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTIuMCwgLTIpOworICAgIFRlc3RD
b252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0yLjAxLCAtMik7CisKKyAgICBUZXN0Q29udmVydEZyb21G
bG9hdFNpZ25lZCgweDEuRkZGRkZFcCs2MiwgMHg3RkZGRkY4MDAwMDAwMDAwTEwpOworICAgIFRl
c3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKDB4MS5GRkZGRkNwKzYyLCAweDdGRkZGRjAwMDAwMDAw
MDBMTCk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtMHgxLkZGRkZGRXArNjIs
IE1ha2VJbnQxMjgoMHhGRkZGRkZGRkZGRkZGRkZGTEwsIDB4ODAwMDAwODAwMDAwMDAwMExMKSk7
CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTB4MS5GRkZGRkNwKzYyLCBNYWtlSW50
MTI4KDB4RkZGRkZGRkZGRkZGRkZGRkxMLCAweDgwMDAwMTAwMDAwMDAwMDBMTCkpOworCisgICAg
VGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMHgxLkZGRkZGRkZGRkZGRkZwKzYyLCAweDdGRkZG
RkZGRkZGRkZDMDBMTCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMHgxLkZGRkZG
RkZGRkZGRkVwKzYyLCAweDdGRkZGRkZGRkZGRkY4MDBMTCk7CisKKyAgICBUZXN0Q29udmVydEZy
b21GbG9hdFNpZ25lZCgtMHgxLkZGRkZGRkZGRkZGRkZwKzYyLCBNYWtlSW50MTI4KDB4RkZGRkZG
RkZGRkZGRkZGRkxMLCAweDgwMDAwMDAwMDAwMDA0MDBMTCkpOworICAgIFRlc3RDb252ZXJ0RnJv
bUZsb2F0U2lnbmVkKC0weDEuRkZGRkZGRkZGRkZGRXArNjIsIE1ha2VJbnQxMjgoMHhGRkZGRkZG
RkZGRkZGRkZGTEwsIDB4ODAwMDAwMDAwMDAwMDgwMExMKSk7CisKKyAgICBUZXN0Q29udmVydEZy
b21GbG9hdFNpZ25lZCgweDEuRkZGRkZGRkZGRkZGRnArMTI2LCBNYWtlSW50MTI4KDB4N0ZGRkZG
RkZGRkZGRkMwMExMLCAwKSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMHgxLkZG
RkZGRkZGRkZGRkVwKzEyNiwgTWFrZUludDEyOCgweDdGRkZGRkZGRkZGRkY4MDBMTCwgMCkpOwor
CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTB4MS5GRkZGRkZGRkZGRkZGcCsxMjYs
IE1ha2VJbnQxMjgoMHg4MDAwMDAwMDAwMDAwNDAwTEwsIDApKTsKKyAgICBUZXN0Q29udmVydEZy
b21GbG9hdFNpZ25lZCgtMHgxLkZGRkZGRkZGRkZGRkVwKzEyNiwgTWFrZUludDEyOCgweDgwMDAw
MDAwMDAwMDA4MDBMTCwgMCkpOworCisgICAgLy8gbWF4L21pbiBzYWZlIGludGVnZXIgKGFuZCB0
aGUgbmV4dCBjbG9zZXN0IGludGVnZXIgdG8gMCBmcm9tIHRoZXJlKQorICAgIFRlc3RDb252ZXJ0
RnJvbUZsb2F0U2lnbmVkKG1heFNhZmVJbnRlZ2VyLCBtYXhTYWZlSW50ZWdlcjY0KTsKKyAgICBU
ZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtbWF4U2FmZUludGVnZXIsIC1tYXhTYWZlSW50ZWdl
cjY0KTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZChtYXhTYWZlSW50ZWdlciAtIDEs
IG1heFNhZmVJbnRlZ2VyNjQgLSAxKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgt
KG1heFNhZmVJbnRlZ2VyIC0gMSksIC0obWF4U2FmZUludGVnZXI2NCAtIDEpKTsKKworICAgIFRl
c3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMC4wLCAwKTsKKworICAgIFRlc3RDb252ZXJ0RnJv
bUZsb2F0VW5zaWduZWQoMC41LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVk
KDAuOTksIDApOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMS4wLCAxKTsKKyAg
ICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDEuNSwgMSk7CisgICAgVGVzdENvbnZlcnRG
cm9tRmxvYXRVbnNpZ25lZCgxLjk5LCAxKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2ln
bmVkKDIuMCwgMik7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgyLjAxLCAyKTsK
KyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0wLjUsIDApOyAvLyByZXR1cm5zIDAg
Zm9yIG5lZ2F0aXZlIGlucHV0CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgtMC45
OSwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgtMS4wLCAwKTsKKyAgICBU
ZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0xLjUsIDApOworICAgIFRlc3RDb252ZXJ0RnJv
bUZsb2F0VW5zaWduZWQoLTEuOTksIDApOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWdu
ZWQoLTIuMCwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgtMi4wMSwgMCk7
CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS5GRkZGRkVwKzYyLCAweDdG
RkZGRjgwMDAwMDAwMDBMTCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgweDEu
RkZGRkZDcCs2MiwgMHg3RkZGRkYwMDAwMDAwMDAwTEwpOworCisgICAgVGVzdENvbnZlcnRGcm9t
RmxvYXRVbnNpZ25lZCgtMHgxLkZGRkZGRXArNjIsIDApOworICAgIFRlc3RDb252ZXJ0RnJvbUZs
b2F0VW5zaWduZWQoLTB4MS5GRkZGRkNwKzYyLCAwKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZs
b2F0VW5zaWduZWQoMHgxLkZGRkZGRkZGRkZGRkZwKzYzLCAweEZGRkZGRkZGRkZGRkY4MDBVTEwp
OworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLjAwMDAwMDAwMDAwMDBwKzYz
LCAweDgwMDAwMDAwMDAwMDAwMDBVTEwpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWdu
ZWQoMHgxLkZGRkZGRkZGRkZGRkZwKzYyLCAweDdGRkZGRkZGRkZGRkZDMDBVTEwpOworICAgIFRl
c3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLkZGRkZGRkZGRkZGRkVwKzYyLCAweDdGRkZG
RkZGRkZGRkY4MDBVTEwpOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgweDEu
RkZGRkZGRkZGRkZGRnArMTI3LCBNYWtlVUludDEyOCgweEZGRkZGRkZGRkZGRkY4MDBVTEwsIDAp
KTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS4wMDAwMDAwMDAwMDAwcCsx
MjcsIE1ha2VVSW50MTI4KDB4ODAwMDAwMDAwMDAwMDAwMFVMTCwgMCkpOworICAgIFRlc3RDb252
ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLkZGRkZGRkZGRkZGRkZwKzEyNiwgTWFrZVVJbnQxMjgo
MHg3RkZGRkZGRkZGRkZGQzAwVUxMLCAwKSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNp
Z25lZCgweDEuRkZGRkZGRkZGRkZGRXArMTI2LCBNYWtlVUludDEyOCgweDdGRkZGRkZGRkZGRkY4
MDBVTEwsIDApKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS4wMDAwMDAw
MDAwMDAwcCsxMjgsIE1ha2VVSW50MTI4KDB4RkZGRkZGRkZGRkZGRkZGRlVMTCwgMHhGRkZGRkZG
RkZGRkZGRkZGVUxMKSk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0weDEu
RkZGRkZGRkZGRkZGRnArNjIsIDApOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQo
LTB4MS5GRkZGRkZGRkZGRkZFcCs2MiwgMCk7CisKKyAgICAvLyBtYXgvbWluIHNhZmUgaW50ZWdl
ciAoYW5kIHRoZSBuZXh0IGNsb3Nlc3QgaW50ZWdlciB0byAwIGZyb20gdGhlcmUpCisgICAgVGVz
dENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZChtYXhTYWZlSW50ZWdlciwgbWF4U2FmZUludGVnZXI2
NCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZChtYXhTYWZlSW50ZWdlciAtIDEu
MCwgbWF4U2FmZUludGVnZXI2NCAtIDEpOworfQorCitzdGF0aWMgdm9pZCBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWRJbXBsKE5vbk5hdGl2ZUludDEyOCBhLCBkb3VibGUgZXhwZWN0ZWQsIGNvbnN0
IGNoYXIqIGFTdHIsIGNvbnN0IGNoYXIqIGV4cGVjdGVkU3RyKQoreworICAgIGRvdWJsZSB4IHsg
YSB9OworICAgIEVYUEVDVF9FUSh4LCBleHBlY3RlZCkgPDwgImNvbnZlcnQgc2lnbmVkICIgPDwg
YVN0ciA8PCAiIHRvIGZsb2F0LCBleHBlY3RlZCAiIDw8IGV4cGVjdGVkU3RyOworfQorCitzdGF0
aWMgdm9pZCBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZEltcGwoTm9uTmF0aXZlVUludDEyOCBh
LCBkb3VibGUgZXhwZWN0ZWQsIGNvbnN0IGNoYXIqIGFTdHIsIGNvbnN0IGNoYXIqIGV4cGVjdGVk
U3RyKQoreworICAgIGRvdWJsZSB4IHsgYSB9OworICAgIEVYUEVDVF9FUSh4LCBleHBlY3RlZCkg
PDwgImNvbnZlcnQgdW5zaWduZWQgIiA8PCBhU3RyIDw8ICIgdG8gZmxvYXQsIGV4cGVjdGVkICIg
PDwgZXhwZWN0ZWRTdHI7Cit9CisKKyNkZWZpbmUgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKGEs
IGV4cGVjdGVkKSBUZXN0Q29udmVydFRvRmxvYXRTaWduZWRJbXBsKGEsIGV4cGVjdGVkLCAjYSwg
I2V4cGVjdGVkKQorI2RlZmluZSBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChhLCBleHBlY3Rl
ZCkgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWRJbXBsKGEsIGV4cGVjdGVkLCAjYSwgI2V4cGVj
dGVkKQorCitURVNUKFdURl9JbnQxMjgsIENvbnZlcnNpb25Ub0Zsb2F0aW5nUG9pbnQpCit7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDAsIDAuMCk7CisKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMSwgMS4wKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMiwgMi4w
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMjAsIDIwLjApOworICAgIFRlc3RDb252
ZXJ0VG9GbG9hdFNpZ25lZCgtMSwgLTEuMCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVk
KC0yLCAtMi4wKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoLTIwLCAtMjAuMCk7CisK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHg3RkZGRkY4MDAwMDAwMDAwTEwsIDB4MS5G
RkZGRkVwKzYyKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHg3RkZGRkZGRkZGRkZG
ODAwTEwsIDB4MS5GRkZGRkZGRkZGRkZFcCs2Mik7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2ln
bmVkKDB4N0ZGRkZGMDAwMDAwMDAwMExMLCAweDEuRkZGRkZDcCs2Mik7CisgICAgVGVzdENvbnZl
cnRUb0Zsb2F0U2lnbmVkKDB4N0ZGRkZGRkZGRkZGRjAwMExMLCAweDEuRkZGRkZGRkZGRkZGQ3Ar
NjIpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHg4MDAwMDA4
MDAwMDAwMDAwTEwsIDApLCAtMHgxLkZGRkZGRXArMTI2KTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoTWFrZUludDEyOCgweDgwMDAwMDAwMDAwMDA4MDBMTCwgMCksIC0weDEuRkZGRkZG
RkZGRkZGRXArMTI2KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgw
eDgwMDAwMTAwMDAwMDAwMDBMTCwgMCksIC0weDEuRkZGRkZDcCsxMjYpOworICAgIFRlc3RDb252
ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4ODAwMDAwMDAwMDAwMTAwMExMLCAwKSwgLTB4
MS5GRkZGRkZGRkZGRkZDcCsxMjYpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1h
a2VJbnQxMjgoMHg4MDAwMDAwMDAwMDAwMDAwTEwsIDApLCAtMHgxLjAwMDAwMHArMTI3KTsKKyAg
ICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDgwMDAwMDAwMDAwMDAwMDFM
TCwgMCksIC0weDEuMDAwMDAwcCsxMjcpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVk
KDB4MDAwN0ZCNzJFODAwMDAwMExMLCAweDEuRkVEQ0JBcCs1MCk7CisKKyAgICBUZXN0Q29udmVy
dFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkVBMDAwMDAwTEwsIDB4MS5GRURDQkE4cCs1MCk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZCNzJFQjAwMDAwMExMLCAweDEuRkVE
Q0JBQ3ArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAwMDdGQjcyRUJGRkZG
RkZMTCwgMHgxLkZFRENCQUZGRkZGRkNwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWdu
ZWQoMHgwMDA3RkI3MkVDMDAwMDAwTEwsIDB4MS5GRURDQkJwKzUwKTsKKyAgICBUZXN0Q29udmVy
dFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkU4MDAwMDAxTEwsIDB4MS5GRURDQkEwMDAwMDA0cCs1
MCk7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkU2MDAwMDAwTEws
IDB4MS5GRURDQjk4cCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZC
NzJFNzAwMDAwMExMLCAweDEuRkVEQ0I5Q3ArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNp
Z25lZCgweDAwMDdGQjcyRTdGRkZGRkZMTCwgMHgxLkZFRENCOUZGRkZGRkNwKzUwKTsKKyAgICBU
ZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkU0MDAwMDAxTEwsIDB4MS5GRURDQjkw
MDAwMDA0cCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZCNzJFNDAw
MDAwMExMLCAweDEuRkVEQ0I5cCs1MCk7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQo
MHgwMjM0NzlGRDBFMDkyREMwTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRBMUxMLCAweDEuMUEzQ0ZFODcwNDk2
RHArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQjBM
TCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQo
MHgwMjM0NzlGRDBFMDkyREI4TEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRCNkxMLCAweDEuMUEzQ0ZFODcwNDk2
RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQkZM
TCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQo
MHgwMjM0NzlGRDBFMDkyREMxTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDN0xMLCAweDEuMUEzQ0ZFODcwNDk2
RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQzhM
TCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQo
MHgwMjM0NzlGRDBFMDkyRENGTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkREMExMLCAweDEuMUEzQ0ZFODcwNDk2
RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZEMEUwOTJERDFM
TCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQo
MHgwMjM0NzlGRDBFMDkyREQ4TEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRERkxMLCAweDEuMUEzQ0ZFODcwNDk2
RnArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZEMEUwOTJERTBM
TCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25l
ZChNYWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRDMExMLCAwKSwgMHgxLjFBM0NGRTg3MDQ5NkVw
KzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlG
RDBFMDkyREExTEwsIDEpLCAweDEuMUEzQ0ZFODcwNDk2RHArMTIxKTsKKyAgICBUZXN0Q29udmVy
dFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQjBMTCwgMiksIDB4MS4x
QTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50
MTI4KDB4MDIzNDc5RkQwRTA5MkRCOExMLCAzKSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEyMSk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREI2
TEwsIDQpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRT
aWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQkZMTCwgNSksIDB4MS4xQTNDRkU4NzA0
OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4MDIz
NDc5RkQwRTA5MkRDMUxMLCA2KSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREM3TEwsIDcpLCAw
eDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFr
ZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQzhMTCwgOCksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEp
OworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5
MkRDRkxMLCA5KSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zs
b2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREQwTEwsIDApLCAweDEuMUEzQ0ZF
ODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgw
eDAyMzQ3OUZEMEUwOTJERDFMTCwgMTEpLCAweDEuMUEzQ0ZFODcwNDk2RnArMTIxKTsKKyAgICBU
ZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJERDhMTCwg
MTIpLCAweDEuMUEzQ0ZFODcwNDk2RnArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWdu
ZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEREZMTCwgMTMpLCAweDEuMUEzQ0ZFODcwNDk2
RnArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3
OUZEMEUwOTJERTBMTCwgMTQpLCAweDEuMUEzQ0ZFODcwNDk2RnArMTIxKTsKKworICAgIC8vIG1h
eC9taW4gc2FmZSBpbnRlZ2VyIChhbmQgdGhlIG5leHQgY2xvc2VzdCBpbnRlZ2VyIHRvIDAgZnJv
bSB0aGVyZSkKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQobWF4U2FmZUludGVnZXI2NCwg
bWF4U2FmZUludGVnZXIpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgtbWF4U2FmZUlu
dGVnZXI2NCwgLW1heFNhZmVJbnRlZ2VyKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQo
bWF4U2FmZUludGVnZXI2NCAtIDEsIG1heFNhZmVJbnRlZ2VyIC0gMS4wKTsKKyAgICBUZXN0Q29u
dmVydFRvRmxvYXRTaWduZWQoLShtYXhTYWZlSW50ZWdlcjY0IC0gMSksIC0obWF4U2FmZUludGVn
ZXIgLSAxLjApKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDAsIDAuMCk7CisK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgxLCAxLjApOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKDIsIDIuMCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQo
MjAsIDIwLjApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHg3RkZGRkY4MDAw
MDAwMDAwTEwsIDB4MS5GRkZGRkVwKzYyKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25l
ZCgweDdGRkZGRkZGRkZGRkY4MDBMTCwgMHgxLkZGRkZGRkZGRkZGRkVwKzYyKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDdGRkZGRjAwMDAwMDAwMDBMTCwgMHgxLkZGRkZGQ3Ar
NjIpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4N0ZGRkZGRkZGRkZGRjAwMExM
LCAweDEuRkZGRkZGRkZGRkZGQ3ArNjIpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWdu
ZWQoTWFrZVVJbnQxMjgoMHg4MDAwMDA4MDAwMDAwMDAwTEwsIDApLCAweDEuMDAwMDAxcCsxMjcp
OworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4ODAwMDAwMDAw
MDAwMDgwMExMLCAwKSwgMHgxLjAwMDAwMDAwMDAwMDFwKzEyNyk7CisgICAgVGVzdENvbnZlcnRU
b0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHg4MDAwMDEwMDAwMDAwMDAwTEwsIDApLCAweDEu
MDAwMDAycCsxMjcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4
KDB4ODAwMDAwMDAwMDAwMTAwMExMLCAwKSwgMHgxLjAwMDAwMDAwMDAwMDJwKzEyNyk7CisKKyAg
ICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDgwMDAwMDAwMDAwMDAw
MDBMTCwgMCksIDB4MS4wMDAwMDBwKzEyNyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWdu
ZWQoTWFrZVVJbnQxMjgoMHg4MDAwMDAwMDAwMDAwMDAxTEwsIDApLCAweDEuMDAwMDAwMDAwMDAw
MDAwMnArMTI3KTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJF
ODAwMDAwMExMLCAweDEuRkVEQ0JBcCs1MCk7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNp
Z25lZCgweDAwMDdGQjcyRUEwMDAwMDBMTCwgMHgxLkZFRENCQThwKzUwKTsKKyAgICBUZXN0Q29u
dmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRUIwMDAwMDBMTCwgMHgxLkZFRENCQUNwKzUw
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRUJGRkZGRkZMTCwg
MHgxLkZFRENCQUZGRkZGRkNwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgw
eDAwMDdGQjcyRUMwMDAwMDBMTCwgMHgxLkZFRENCQnArNTApOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJFODAwMDAwMUxMLCAweDEuRkVEQ0JBMDAwMDAwNHArNTAp
OworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3RkI3MkU2MDAwMDAwTEws
IDB4MS5GRURDQjk4cCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3
RkI3MkU3MDAwMDAwTEwsIDB4MS5GRURDQjlDcCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0
VW5zaWduZWQoMHgwMDA3RkI3MkU3RkZGRkZGTEwsIDB4MS5GRURDQjlGRkZGRkZDcCs1MCk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3RkI3MkU0MDAwMDAxTEwsIDB4MS5G
RURDQjkwMDAwMDA0cCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3
RkI3MkU0MDAwMDAwTEwsIDB4MS5GRURDQjlwKzUwKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDMExMLCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOwor
ICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRBMUxMLCAweDEu
MUEzQ0ZFODcwNDk2RHArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIz
NDc5RkQwRTA5MkRCMExMLCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRCOExMLCAweDEuMUEzQ0ZFODcwNDk2RXAr
NTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRCNkxM
LCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVk
KDB4MDIzNDc5RkQwRTA5MkRCRkxMLCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RD
b252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDMUxMLCAweDEuMUEzQ0ZFODcw
NDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5
MkRDN0xMLCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVu
c2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDOExMLCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOworICAg
IFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDRkxMLCAweDEuMUEz
Q0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5
RkQwRTA5MkREMExMLCAweDEuMUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkREMUxMLCAweDEuMUEzQ0ZFODcwNDk2RnArNTcp
OworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkREOExMLCAw
eDEuMUEzQ0ZFODcwNDk2RnArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4
MDIzNDc5RkQwRTA5MkRERkxMLCAweDEuMUEzQ0ZFODcwNDk2RnArNTcpOworICAgIFRlc3RDb252
ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRFMExMLCAweDEuMUEzQ0ZFODcwNDk2
RnArNTcpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHgw
MjM0NzlGRDBFMDkyREMwTEwsIDApLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQTFMTCwg
MSksIDB4MS4xQTNDRkU4NzA0OTZEcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2ln
bmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCMExMLCAyKSwgMHgxLjFBM0NGRTg3MDQ5
NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHgw
MjM0NzlGRDBFMDkyREI4TEwsIDMpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQjZMTCwg
NCksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2ln
bmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCRkxMLCA1KSwgMHgxLjFBM0NGRTg3MDQ5
NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHgw
MjM0NzlGRDBFMDkyREMxTEwsIDYpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQzdMTCwg
NyksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2ln
bmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRDOExMLCA4KSwgMHgxLjFBM0NGRTg3MDQ5
NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHgw
MjM0NzlGRDBFMDkyRENGTEwsIDkpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUwOTJERDBMTCwg
MCksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2ln
bmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkREMUxMLCAxMSksIDB4MS4xQTNDRkU4NzA0
OTZGcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4
MDIzNDc5RkQwRTA5MkREOExMLCAxMiksIDB4MS4xQTNDRkU4NzA0OTZGcCsxMjEpOworICAgIFRl
c3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRERkxM
LCAxMyksIDB4MS4xQTNDRkU4NzA0OTZGcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVu
c2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRFMExMLCAxNCksIDB4MS4xQTNDRkU4
NzA0OTZGcCsxMjEpOworCisgICAgLy8gbWF4L21pbiBzYWZlIGludGVnZXIgKGFuZCB0aGUgbmV4
dCBjbG9zZXN0IGludGVnZXIgdG8gMCBmcm9tIHRoZXJlKQorICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFVuc2lnbmVkKG1heFNhZmVJbnRlZ2VyNjQsIG1heFNhZmVJbnRlZ2VyKTsKKyAgICBUZXN0Q29u
dmVydFRvRmxvYXRVbnNpZ25lZChtYXhTYWZlSW50ZWdlcjY0IC0gMSwgbWF4U2FmZUludGVnZXIg
LSAxLjApOworfQorCiAjaWYgSEFWRShJTlQxMjhfVCkKIHN0YXRpYyBfX3VpbnQxMjhfdCBUb05h
dGl2ZShOb25OYXRpdmVVSW50MTI4IG4pCiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU4MTBiYTFmNzQxOGU0ZTExYzYzZTRiMGY2OTMy
ZjRkN2IyZTYzYzUuLjVlZTg3MzczYTYzZGI0MGM4NjViMGM3ZDJmMzdmYWFmNzUyOWYxOTUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy90ZW1w
b3JhbC1pbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNo
b3VsZE5vdEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGluc3RhbnRzLmZv
ckVhY2gpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LlRlbXBvcmFsLkluc3RhbnQpOgorICAg
ICAgICAoY29uc3QubWF4VmFsdWUubmV3LlRlbXBvcmFsLkluc3RhbnQpOgorICAgICAgICAoc2hv
dWxkQmUuZXBvY2guc3VidHJhY3QpOgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6IE5v
IG5lZWQgdG8gaWdub3JlIGFsbCBUZW1wb3JhbC5JbnN0YW50IHRlc3RzCisgICAgICAgICAgYW55
bW9yZSwgb25seSB0aGUgb25lcyBmb3IgdGhlIHVuaW1wbGVtZW50ZWQgbWV0aG9kcy4KKwogMjAy
MS0xMC0xOCAgUGhpbGxpcCBNYXRlcyAgPHBtYXRlc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFRl
c3QgY292ZXJhZ2UgZm9yIEpTQyBzaGFkb3cgcmVhbG1zIGltcGxlbWVudGF0aW9uCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
dGVtcG9yYWwtaW5zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGI3YTViNmNhMDU5MzRhNjQ1N2Q2ZjU2
ZDlkNWM1YjU0MWUyYTgyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9y
YWwtaW5zdGFudC5qcwpAQCAtMCwwICsxLDQwNyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhw
ZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkTm90QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgPT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGEgdmFsdWUgdG8gYmUgZGlmZmVy
ZW50IGZyb20gJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisK
KyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2Ug
IT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAgICAgICAgICAgaWYgKCFt
ZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2ggJHttZXNzYWdlfSFgKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciksIG1l
c3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBlcG9jaAoreworICAgIGNvbnN0IGlu
c3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hOYW5vc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
MC0wMS0wMVQwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3Rh
bnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDApOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAwKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50
b1N0cmluZygpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC50b0pTT04oKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8v
IHBvc2l0aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAg
IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDFfMDAwXzAwMF8wMDApLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygxXzAwMF8wMDBfMDAw
XzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDFf
MDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9j
aE5hbm9zZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWxsaXNlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAw
XzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcyMDAxLTA5LTA5
VDAxOjQ2OjQwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjAwMS0w
OS0wOVQwMTo0Njo0MFonKTsKKyAgICB9KTsKK30KKworLy8gbmVnYXRpdmUgZXBvY2ggdmFsdWUK
K3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQo
LTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hTZWNvbmRzKC0xXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwXzAw
MG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKC0xXzAw
MF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTkzOC0wNC0yNFQyMjoxMzoyMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGlu
c3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIC0xXzAw
MF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywg
LTFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jv
c2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyk7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTM4LTA0LTI0VDIyOjEzOjIw
WicpOworICAgIH0pOworfQorCisvLyBtYXhpbnQ2NCBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0
IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg5MjIzMzcyMDM2ODU0
Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
OTIyMzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzIy
NjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9y
RWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25k
cywgOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29u
ZHMsIDkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9z
ZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hOYW5vc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LnRvU3RyaW5nKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0
Nzc1ODA3WicpOworICAgIH0pOworfQorCisvLyBtaW5pbnQ2NCBlcG9jaCB2YWx1ZQoreworICAg
IGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtOTIyMzM3
MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC05MjIzMzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyksCisgICAgXTsKKyAgICBpbnN0
YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hTZWNvbmRzLCAtOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hN
aWxsaXNlY29uZHMsIC05MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pY3Jvc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIy
NDE5MlonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE2NzctMDktMjFU
MDA6MTI6NDMuMTQ1MjI0MTkyWicpOworICAgIH0pOworfQorCisvLyBtYXggSW5zdGFudCByYW5n
ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFu
dCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzKDg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDApLAorICAgICAg
ICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBf
MDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRz
KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCA4NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWls
bGlzZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pY3Jvc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAw
MF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnKzI3NTc2MC0w
OS0xM1QwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJysy
NzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbiBJbnN0YW50IHJh
bmdlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hTZWNvbmRzKC04NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMCksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC04NjQwMF8wMDAw
XzAwMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hNaWxsaXNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTg2NDAwXzAwMDBf
MDAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCks
ICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
SlNPTigpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gdG9v
IGxhcmdlCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQwMF8wMDAw
XzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgL1xiODY0MDAwMDAwMDAwMDAwMDAwMDAw
MVxiLyk7CisvLyB0b28gc21hbGwKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgLy04NjQwMDAw
MDAwMDAwMDAwMDAwMDAxXGIvKTsKKy8vIGxhcmdlciB0aGFuIG1heGludDEyOAorc2hvdWxkVGhy
b3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoMW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC9c
YjY4MDU2NDczMzg0MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBzbWFsbGVy
IHRoYW4gbWluaW50MTI4CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgt
MW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC8tNjgwNTY0NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYz
NTM2NDIyOTEyXGIvKTsKKy8vIGRvZXMgbm90IGNyYXNoIHdoZW4gYmlnaW50IGxvbmdlciB0aGFu
IG1heGludDMyIGRpZ2l0cworc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQo
QmlnSW50KCc5Jy5yZXBlYXQoMjE0NzQ4MzY0NykpKSwgUmFuZ2VFcnJvcik7CisvLyBjb25zdHJ1
Y3RzIGZyb20gc3RyaW5nCitzaG91bGRCZShuZXcgVGVtcG9yYWwuSW5zdGFudCgnMCcpLmVwb2No
TmFub3NlY29uZHMsIDBuKTsKKy8vIHRocm93cyBvbiBudW1iZXIKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBUZW1wb3JhbC5JbnN0YW50KDApLCBUeXBlRXJyb3IpOworLy8gdGhyb3dzIG9uIHN0cmlu
ZyB0aGF0IGRvZXMgbm90IGNvbnZlcnQgdG8gQmlnSW50CitzaG91bGRUaHJvdygoKSA9PiBuZXcg
VGVtcG9yYWwuSW5zdGFudCgnYWJjMTIzJyksIFN5bnRheEVycm9yKTsKKworLy8gSW5zdGFudC5m
cm9tKGluc3RhbnQpIGlzIG5vdCB0aGUgc2FtZSBvYmplY3QKK3sKKyAgICBjb25zdCBpbnN0ID0g
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDIwLTAyLTEyVDExOjQyKzAxOjAwW0V1cm9wZS9BbXN0
ZXJkYW1dJyk7CisgICAgc2hvdWxkTm90QmUoVGVtcG9yYWwuSW5zdGFudC5mcm9tKGluc3QpLCBp
bnN0KTsKK30KKworLy8gdG9TdHJpbmcKKworeworICAgIGNvbnN0IGkxID0gVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzWicpOworICAgIGNvbnN0IGkyID0gVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwWicpOworICAgIGNvbnN0IGkzID0gVGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CisKKyAgICAv
LyBkZWZhdWx0IGlzIHRvIGVtaXQgc2Vjb25kcyBhbmQgZHJvcCB0cmFpbGluZyB6ZXJvcyBhZnRl
ciB0aGUgZGVjaW1hbCcKKyAgICBzaG91bGRCZShpMS50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQx
NToyMzowMFonKTsKKyAgICBzaG91bGRCZShpMi50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToy
MzozMFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjM0WicpOworCisgICAgLy8gdHJ1bmNhdGVzIHRvIG1pbnV0ZQorICAgIFtpMSwgaTIsIGkz
XS5mb3JFYWNoKChpKSA9PiBzaG91bGRCZShpLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWlu
dXRlJyB9KSwgJzE5NzYtMTEtMThUMTU6MjNaJykpOworCisgICAgLy8gb3RoZXIgc21hbGxlc3RV
bml0cyBhcmUgYWxpYXNlcyBmb3IgZnJhY3Rpb25hbCBkaWdpdHMKKyAgICBzaG91bGRCZShpMy50
b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogMCB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFs
bGVzdFVuaXQ6ICdtaWxsaXNlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29u
ZERpZ2l0czogMyB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6
ICdtaWNyb3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czog
NiB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICduYW5vc2Vj
b25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA5IH0pKTsKKwor
ICAgIC8vIHRydW5jYXRlIG9yIHBhZCB0byAyIHBsYWNlcworICAgIHsKKyAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMiB9OworICAgICAgICBzaG91bGRC
ZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAuMDBaJyk7CisgICAg
ICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4w
MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyWicpOworICAgIH0KKyAgICAvLyBwYWQgdG8gNyBwbGFjZXMKKyAgICB7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDcgfTsKKyAg
ICAgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAw
LjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0cmlu
ZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDAwMFonKTsKKyAgICB9CisKKyAg
ICAvLyByb3VuZCB0byBuZWFyZXN0CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFsbGVz
dFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEt
MThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25k
RGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzWicpOworICAgIC8vIHJvdW5kIHVwCisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmco
eyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYt
MTEtMThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vj
b25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMTI0WicpOworICAgIC8vIHJvdW5kIGRvd24KKyAgICBbJ2Zsb29yJywgJ3RydW5jJ10uZm9y
RWFjaCgocm91bmRpbmdNb2RlKSA9PiB7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsg
c21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToy
M1onKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGln
aXRzOiAzLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKTsKKyAg
ICB9KTsKKworICAgIHsKKyAgICAgICAgLy8gcm91bmRpbmcgZG93biBpcyB0b3dhcmRzIHRoZSBC
aWcgQmFuZywgbm90IHRvd2FyZHMgMSBCQ0UKKyAgICAgICAgY29uc3QgaTQgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJy0wMDAwOTktMTItMTVUMTI6MDA6MDAuNVonKTsKKyAgICAgICAgc2hvdWxk
QmUoaTQudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnLCByb3VuZGluZ01vZGU6ICdm
bG9vcicgfSksICctMDAwMDk5LTEyLTE1VDEyOjAwOjAwWicpOworCisgICAgICAgIC8vIHJvdW5k
aW5nIGNhbiBhZmZlY3QgYWxsIHVuaXRzCisgICAgICAgIGNvbnN0IGk1ID0gVGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTk5OVonKTsKKyAgICAgICAgc2hv
dWxkQmUoaTUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA4LCByb3VuZGluZ01v
ZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwMDAwMDBaJyk7Cisg
ICAgfQorfQorCisvLyBsZWFwIHNlY29uZCBpcyBjb25zdHJhaW5lZAorc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcyMDE2LTEyLTMxVDIzOjU5OjYwWicpfWAsICcyMDE2LTEyLTMx
VDIzOjU5OjU5WicpOworLy8gdmFyaWFudCB0aW1lIHNlcGFyYXRvcnMKK3Nob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOCAxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQx
NToyMzowMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OHQxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIHZhcmlhbnQgVVRDIGRl
c2lnbmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQx
NToyM3onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIGFueSBudW1iZXIgb2YgZGVj
aW1hbCBwbGFjZXMKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyl9YCwgJzE5
NzYtMTEtMThUMTU6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
M1onKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjM0WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2WicpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyMzQ1NlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1
NjdaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzNDU2NzhaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2NzhaJyk7Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
NDU2Nzg5WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8vIHZhcmlh
bnQgZGVjaW1hbCBzZXBhcmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3Ni0xMS0xOFQxNToyMzozMCwxMlonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKTsK
Ky8vIHZhcmlhbnQgbWludXMgc2lnbgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyXHUyMjEyMDI6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNzoy
MzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnXHUyMjEyMDA5
OTk5LTExLTE4VDE1OjIzOjMwLjEyWicpfWAsICctMDA5OTk5LTExLTE4VDE1OjIzOjMwLjEyWicp
OworLy8gbWl4dHVyZSBvZiBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVon
KTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNTIzMzAuMSswMDow
MCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAx
OTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsK
K3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNToyMzoz
MC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIz
MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworLy8gb3B0aW9uYWwgcGFydHMKK3Nob3VsZEJlKGAke1Rl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMCswMCcpfWAsICcxOTc2LTEx
LTE4VDE1OjIzOjMwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1WicpfWAsICcxOTc2LTExLTE4VDE1OjAwOjAwWicpOworLy8gaWdub3JlcyBhbnkg
c3BlY2lmaWVkIGNhbGVuZGFyCisvLyBGSVhNRTogcGFyc2UgY2FsZW5kYXIKKy8vIHNob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODla
W3UtY2E9ZGlzY29yZF0nKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7Cisv
LyBubyBqdW5rIGF0IGVuZCBvZiBzdHJpbmcKK3Nob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaanVuaycpLCBSYW5nZUVy
cm9yKTsKKworLy8gRm9yIGNvbnZlbmllbmNlIGluIHNldmVyYWwgdGVzdHMKK2NvbnN0IGVwb2No
ID0gbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pOworY29uc3QgbWluVmFsdWUgPSBuZXcgVGVtcG9y
YWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbik7Citjb25zdCBtYXhWYWx1
ZSA9IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pOwor
CisvLyBhZGQoKQorCit7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgaG91cnM6IDEgfSkuZXBv
Y2hOYW5vc2Vjb25kcywgMzYwMF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFk
ZCh7IGhvdXJzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMzYwMF8wMDBfMDAwXzAwMG4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbnV0ZXM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywg
NjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaW51dGVzOiAtMSB9
KS5lcG9jaE5hbm9zZWNvbmRzLCAtNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9j
aC5hZGQoeyBzZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBuKTsK
KyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRz
LCAtMV8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbGxpc2Vjb25k
czogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9j
aC5hZGQoeyBtaWxsaXNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBu
KTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWNyb3NlY29uZHM6IDEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgMV8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWNyb3NlY29uZHM6
IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFk
ZCh7IG5hbm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFuKTsKKyAgICBzaG91bGRC
ZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFuKTsK
K30KKworeworICAgIC8vIG1heCBkdXJhdGlvbiB0aGF0IGNhbiBiZSBhZGRlZCB0byBhbnkgSW5z
dGFudAorICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IGhvdXJzOiA0OF8wMDAwXzAwMDAgfSku
ZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxk
QmUobWF4VmFsdWUuYWRkKHsgaG91cnM6IC00OF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25k
cywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuYWRk
KHsgbWludXRlczogMjg4MF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUu
ZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWludXRlczog
LTI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3Nl
Y29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IHNlY29uZHM6IDE3MjgwMF8wMDAw
XzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDAgfSku
ZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgLy8gbm90
ZSwgdW5zYWZlIGludGVnZXJzIGZyb20gaGVyZSBvbjsgdGhlIG11bHRpcGxpY2F0aW9uIHRvIGNv
bnZlcnQKKyAgICAvLyBtaWxsaXNlY29uZHMgYW5kIG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25k
cyBzaG91bGQgdGFrZSBwbGFjZSBpbiB0aGUKKyAgICAvLyBiaWdpbnQgZG9tYWluLgorICAgIHNo
b3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pbGxpc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWF4VmFsdWUuYWRkKHsgbWlsbGlzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWluVmFsdWUuYWRkKHsgbWljcm9zZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwXzAwMF8w
MDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAg
c2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWljcm9zZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8w
MDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOwor
ICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG5hbm9zZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAw
XzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29u
ZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG5hbm9zZWNvbmRzOiAtMTcyODAwXzAw
MDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5h
bm9zZWNvbmRzKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5nIDY0IGJpdHMKKyAgICBjb25z
dCBleHA2NCA9IDIgKiogNjQ7CisgICAgWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAn
bWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiBleHA2NCB9KSwgUmFuZ2VF
cnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTogLWV4
cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICB9KTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBu
YW5vc2Vjb25kczogZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywgMTg0NDY3NDQwNzM3MDk1NTE2
MTZuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczogLWV4cDY0IH0pLmVw
b2NoTmFub3NlY29uZHMsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNm4pOworfQorCit7CisgICAgLy8g
b3ZlcmZsb3dpbmcgMTI4IGJpdHMKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycs
ICdtaWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJywgJ25hbm9zZWNvbmRzJ10uZm9yRWFjaCgo
dW5pdCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06
IE51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygo
KSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IC1OdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9y
KTsKKyAgICB9KTsKK30KKworLy8gc3VidHJhY3QoKQorCit7CisgICAgc2hvdWxkQmUoZXBvY2gu
c3VidHJhY3QoeyBob3VyczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMzYwMF8wMDBfMDAwXzAw
MG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgaG91cnM6IC0xIH0pLmVwb2NoTmFu
b3NlY29uZHMsIDM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFj
dCh7IG1pbnV0ZXM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTYwXzAwMF8wMDBfMDAwbik7Cisg
ICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaW51dGVzOiAtMSB9KS5lcG9jaE5hbm9zZWNv
bmRzLCA2MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgc2Vj
b25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMG4pOworICAgIHNob3Vs
ZEJlKGVwb2NoLnN1YnRyYWN0KHsgc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8w
MDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWlsbGlzZWNvbmRz
OiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9j
aC5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6IDEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3Qo
eyBtaWNyb3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwbik7CisgICAgc2hv
dWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRz
LCAtMW4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IC0xIH0p
LmVwb2NoTmFub3NlY29uZHMsIDFuKTsKK30KKworeworICAgIC8vIG1heCBkdXJhdGlvbiB0aGF0
IGNhbiBiZSBhZGRlZCB0byBhbnkgSW5zdGFudAorICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRy
YWN0KHsgaG91cnM6IDQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5l
cG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IGhvdXJz
OiAtNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3Nl
Y29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWludXRlczogMjg4MF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaW51dGVzOiAtMjg4MF8wMDAwXzAw
MDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAg
c2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwIH0p
LmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3Vs
ZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDAgfSkuZXBv
Y2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgLy8gbm90ZSwg
dW5zYWZlIGludGVnZXJzIGZyb20gaGVyZSBvbjsgdGhlIG11bHRpcGxpY2F0aW9uIHRvIGNvbnZl
cnQKKyAgICAvLyBtaWxsaXNlY29uZHMgYW5kIG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcyBz
aG91bGQgdGFrZSBwbGFjZSBpbiB0aGUKKyAgICAvLyBiaWdpbnQgZG9tYWluLgorICAgIHNob3Vs
ZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWlsbGlzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwXzAw
MCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBz
aG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogLTE3MjgwMF8wMDAwXzAw
MDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOwor
ICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAxNzI4MDBfMDAw
MF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vj
b25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6IC0x
NzI4MDBfMDAwMF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBv
Y2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBuYW5vc2Vj
b25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBt
aW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFj
dCh7IG5hbm9zZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5h
bm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKK30KKworeworICAgIC8vIG92
ZXJmbG93aW5nIDY0IGJpdHMKKyAgICBjb25zdCBleHA2NCA9IDIgKiogNjQ7CisgICAgWydob3Vy
cycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25kcydd
LmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guc3Vi
dHJhY3QoeyBbdW5pdF06IGV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IC1leHA2NCB9KSwgUmFuZ2VFcnJvcik7
CisgICAgfSk7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogZXhw
NjQgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7CisgICAgc2hv
dWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogLWV4cDY0IH0pLmVwb2NoTmFub3Nl
Y29uZHMsIDE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxvd2lu
ZyAxMjggYml0cworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxpc2Vj
b25kcycsICdtaWNyb3NlY29uZHMnLCAnbmFub3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiBOdW1i
ZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4g
ZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IC1OdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9y
KTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA5NjJkNTI0NjI1MjVhZmJiMjk2ZDlh
Y2ZkNmQ4YTBhMTQ0ZjIwYjM0Li5hZWQ2MzRiMThmY2E2ZmE5MDk2NGM4ZTkxMmM3YWI2MzJmM2Iz
MWU3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yMyw3ICsyMyw4IEBAIHNraXA6CiAgICAgLSBjYWxs
YWJsZS1ib3VuZGFyeS1yZWFsbXMKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudAorICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVU
aW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pv
bmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL05vdwogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0zNCw3ICszNSw4IEBAIHNraXA6CiAgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvWm9uZWREYXRlVGltZQogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0NhbGVuZGFyCi0g
ICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvSW5zdGFudAorICAgIC0gdGVzdC9pbnRsNDAyL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0gdGVzdC9pbnRs
NDAyL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZUlTTwogICAgIC0g
dGVzdC9pbnRsNDAyL1RlbXBvcmFsL05vdwogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL1Bs
YWluRGF0ZQogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL1BsYWluRGF0ZVRpbWUKQEAgLTI0
Nyw2ICsyNDksNyBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRp
b24vcHJvdG90eXBlL3RvU3RyaW5nL3NtYWxsZXN0dW5pdC1wbHVyYWxzLWFjY2VwdGVkLmpzCiAg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvY2Fs
ZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9E
dXJhdGlvbi9wcm90b3R5cGUvdG90YWwvdW5pdC1wbHVyYWxzLWFjY2VwdGVkLmpzCisgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy9zbWFsbGVz
dHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
UGxhaW5UaW1lL2NvbXBhcmUvY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvZnJvbS9jYWxlbmRhci10ZW1wb3JhbC1vYmpl
Y3QuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5cGUv
ZXF1YWxzL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwpAQCAtMjcyLDYgKzI3NSwxMyBAQCBz
a2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3N1
YnRyYWN0L29yZGVyLW9mLW9wZXJhdGlvbnMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9kYXRldW50aWwtZmllbGQuanMKIAorICAgICMg
RGVwZW5kcyBvbiBUZW1wb3JhbC5UaW1lWm9uZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29u
ZHNmb3Itbm9uLWludGVnZXIuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3Rh
bnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91
dC1vZi1yYW5nZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90
b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itd3JvbmctdHlw
ZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9T
dHJpbmcvdGltZXpvbmUtc3RyaW5nLWRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS5qcworCiAgICAgIyBE
ZXBlbmRzIG9uIFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0R1cmF0aW9uL2NvbXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLW5lZ2F0aXZl
LWVwb2NobmFub3NlY29uZHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0
aW9uL2NvbXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5h
bm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCkBAIC0yOTksNiArMzA5LDExIEBAIHNraXA6CiAg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvcmVs
YXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5v
bi1pbnRlZ2VyLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90
b3R5cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5h
bm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1l
em9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci13cm9uZy10eXBlLmpzCisgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS5q
cworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9mcm9tL2FyZ3VtZW50LXpv
bmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJv
dG90eXBlL2VxdWFscy9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0
LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9zaW5jZS9hcmd1bWVudC16b25lZGRhdGV0
aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS91
bnRpbC9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLW5lZ2F0aXZlLWVw
b2NobmFub3NlY29uZHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGlt
ZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3Nl
Y29uZHNmb3Itbm9uLWludGVnZXIuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1Bs
YWluVGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0
bmFub3NlY29uZHNmb3Itb3V0LW9mLXJhbmdlLmpzCkBAIC0zMzQsNSArMzQ5LDYgQEAgc2tpcDoK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3VuZC9i
YWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
RHVyYXRpb24vcHJvdG90eXBlL3JvdW5kL3JvdW5kLW5lZ2F0aXZlLXJlc3VsdC5qcwogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3N1YnRyYWN0L2JhbGFu
Y2UtbmVnYXRpdmUtcmVzdWx0LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS91bnRpbC9pbnN0YW50LXN0cmluZy5qcwogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS9zaW5jZS9iYWxhbmNlLW5lZ2F0aXZlLXRp
bWUtdW5pdHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90
b3R5cGUvdW50aWwvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCg==
</data>
<flag name="commit-queue"
          id="466542"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442122</attachid>
            <date>2021-10-21 22:12:56 -0700</date>
            <delta_ts>2021-10-22 18:50:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211021221255.patch</filename>
            <type>text/plain</type>
            <size>160206</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2YxMzUwYTVhMjFlYjljNTUyZDMyM2MwYjczNTBmMjNiZWEzMTYyLi4wYzkzOWNhNmVkYjRkMzlk
MzIxMTNkOWE2OWQ2ZGRiZmRlNzEzZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtjbGFuZyAxM10gU3VwcHJlc3Mgc2lnbiBjb21wYXJpc29uIHdhcm5p
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDhjMDJhZmJkNWI3YjI1M2Q1M2I3ZDA1Nzc2ZGMyOWRmODMzOTllM2EuLmRkOTcx
MzY4MDNkOGZhMmExZDU2YmRiNTRiZTFkNmI5MjEwYjNmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
OiBXb3JrIGFyb3VuZCBDbGFuZy9MaW51eCBidWcgd2hlcmUKKyAgICAgICAgICBfX2J1aWx0aW5f
bXVsX292ZXJmbG93KCkgZG9lc24ndCB3b3JrIG9uIF9faW50MTI4LgorICAgICAgICAgIFNlZSBo
dHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisgICAgICAgICogd3Rm
L0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OnRpbWVUb01TKTogTW92ZWQgZnJvbSBKU0RhdGVN
YXRoLmguCisgICAgICAgICogd3RmL0ludDEyOC5oOgorICAgICAgICAoV1RGOjpJbnQxMjhJbXBs
OjpJbnQxMjhJbXBsKTogQWRkIGFuIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGZvciBkb3VibGUsCisg
ICAgICAgICAgdXNpbmcgaW1wbGVtZW50YXRpb24gb2YgX19maXhkZnRpKCkgYW5kIF9fZml4dW5z
ZGZ0aSgpIGZyb20gQ2xhbmcKKyAgICAgICAgICBjb21waWxlcl9ydC4gQWxzbyBhZGQgYSBjb252
ZXJzaW9uIGZyb20gSW50MTI4IHRvIFVJbnQxMjgKKyAgICAgICAgICBhbmQgdmljZSB2ZXJzYSwg
Zm9yIHVzZSBpbiBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoV1RGOjpJbnQxMjhJbXBsOjpv
cGVyYXRvciBkb3VibGUgY29uc3QpOiBBZGQgYW4gZXhwbGljaXQgY29udmVyc2lvbgorICAgICAg
ICAgIG9wZXJhdG9yIHRvIGRvdWJsZS4gQ3VycmVudGx5IHVzZXMgYSBzbG93ZXIgYWxnb3JpdGht
LCBwZW5kaW5nCisgICAgICAgICAgaW52ZXN0aWdhdGlvbiBvZiB1c2luZyBpbXBsZW1lbnRhdGlv
biBvZiBfX2Zsb2F0dGlkZigpIGFuZAorICAgICAgICAgIF9fZmxvYXR1bnRpZGYoKS4KKyAgICAg
ICAgKFdURjo6SW50MTI4SW1wbDo6ZG91YmxlQXNCaXRzKTogSGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAoV1RGOjpJbnQxMjhJbXBsOjpiaXRzQXNEb3VibGUpOiBIZWxwZXIgZnVuY3Rpb24uCisK
IDIwMjEtMTAtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgb2xkIEdDQyB3b3JrYXJvdW5kIGZvciBBbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4YjkxODJjZWQxMDE5NTFhOGQwMDViMDZiN2UxN2MxOTYx
YWRhMDc2Li45MmJmOTU2M2JmOWRmOWI4M2VjZTg1MzQyNWIyOTU3NmEzMTI2ZDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEzLDggQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRp
bWUvVGVtcG9yYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA1YzQ3YWY5OWQ0MTc4YjJjOWU2NGQyNTVlOGU5MzNj
MDgwMTI0MWQ2Li43NjgxMzBiMGI3MDNlYWUyMDU2MTgzYWI2OGE3NDM1NmYyNzdmODNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtMTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAx
MTIyOWQ1N2IyYjNiZTg4ZjE4MGNjNmU4MDcxNzM1ZWU0Y2ZhOWVjLi42NWY0OTZmMjgyYzcxMDc4
OTYwMmM1OGE1NWYxZmNlOThkYmRkMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC03Miw2ICs3Miw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
Tm93Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvVGVtcG9yYWxPYmplY3QubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGM5MjdhNTRl
Zjc1MzhlYjk1ZDUzNTY3Zjg2MTdlZWFiODE1NTJmMGUuLjZlNWIxNmE3M2EyNjUxYWQzZjZjMDQ0
MDE0NjI1NjQ1ZDY4OTUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0xOTcsNiArMTk3LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIFRl
bXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRpb25Db25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCisg
ICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFs
T2JqZWN0Lmx1dC5oIFwKICAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYxN2Nl
MjkzNDIwNDI4OTNmMmJkZi4uM2Q5NDc2ODU2N2ExZTBmY2E2MWEzZDlhZDJjYzE2ODBmOWZmMmIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NzQsNiArMTk3NCwxMSBAQAog
CQlFM0ZGNzUzMzFEOUNFQTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZGNzUyRjFEOUNFQTEy
MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5
REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE0OTEyRUYyNjFB
MDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Lmgg
Ki87IH07CisJCUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgg
Ki87IH07CisJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2
RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLzsg
fTsKKwkJRjZENjdENDcyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1
dC5oICovOyB9OworCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5sdXQuaCAqLzsgfTsKIAkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2Jq
ZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovOyB9Owog
CQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDQxNTUyMjUyRUMwNzMw
MDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMDVGQUZEMUZFNENFREEwMDA5MzIzMCAvKiBEZXBy
ZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5MkQ2QTExMUZCRDQ5MUQwMDAyNDVGNCAvKiBEZXByZWNhdGVkSW5z
cGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKQEAgLTUzNzEsNiArNTM3NiwxNCBAQAogCQlGNjkyQTg3
RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0UwMjU1NTk3RDAxRkY2MEY3IC8q
IFJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Owog
CQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NKU1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNkQ2N0QzOTI2
RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2
N0QzRDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNFMjZGOTAyRTgwMDZF
MDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGMTUwMTgyNjkzRDMz
RDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlbXBvcmFsTm93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDE5
MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY2RjE1MDFBMjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEwNiw2ICs3MTE5LDggQEAKIAkJCQk5OTZCNzMx
NDFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUUzQzQ2
MzA1MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmgg
Ki8sCiAJCQkJRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGUubHV0LmggKi8sCisJCQkJRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJRjZGMTUwMjAyNjkz
RDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovLAogCQkJCTUzM0IxNURFMURD
N0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8sCiAJCQkJQUQyRkNDMEExREI1OUM1OTAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi8sCkBAIC04
MDc1LDYgKzgwOTAsMTIgQEAKIAkJCQlBM0M3RURCNDI2QjBEQjM3MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTNDN0VEQjUyNkIwREIzNzAwNEMzNEM1
IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwICovLAogCQkJCUEzQzdFREIwMjZCMERC
MzYwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJRjZENjdE
MzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAgKi8sCisJCQkJRjZENjdE
M0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovLAorCQkJCUY2RDY3RDNC
MjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmggKi8sCisJCQkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJRjZENjdEM0UyNkY5MDJFODAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oICovLAogCQkJCUY2RjE1MDFCMjY5M0QzM0UwMDRCOThFRiAvKiBU
ZW1wb3JhbE5vdy5jcHAgKi8sCiAJCQkJRjZGMTUwMTgyNjkzRDMzRDAwNEI5OEVGIC8qIFRlbXBv
cmFsTm93LmggKi8sCiAJCQkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2Jq
ZWN0LmNwcCAqLywKQEAgLTEwODE4LDYgKzEwODM5LDExIEBACiAJCQkJQTNDN0VEQjkyNkIwREIz
ODAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQzdF
REJBMjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUEzQzdFREI2MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0MjI2Rjkw
MkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ4
MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3Qu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3RTI2RTg2N0I4MDBFNEMyOEIgLyogVGVt
cG9yYWxQbGFpblRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdCMjZFODY3QjgwMEU0
QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMGUyM2EyZjM2YzEyNWU5NjdmMGVmYTVjNGQ5
Yjk4ZGE4OGNlYzEzLi5kZmM5Njc3ZTMxNjQwMjY2MzI0ZDIxMzBiYmQzNWY2OTUzMGNlZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIxLDYgKzEwMjEsOSBAQCBydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcAor
cnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwCiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCA1OWIxYzdlZjViMzkzZDJkYTQ5
ZTQyNjY5OTQ0MDM2Njc2OGI5YTUwLi40MTA5MDQwODI3NThhMTNjNjRiNTZhN2JkZTRiYjc4ODlk
MjVjY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcApAQCAt
MjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIlBhcnNl
SW50LmgiCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1BhcnNpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgpAQCAtODc3LDYgKzg3OSwzNyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRl
LCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZQogICAgIH0pOwog
fQogCitzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1U
ZW1wb3JhbEluc3RhbnRTdHJpbmcKKyAgICAvLyBUZW1wb3JhbEluc3RhbnRTdHJpbmcgOgorICAg
IC8vICAgICBEYXRlIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyAgICAgRGF0ZSBEYXRl
VGltZVNlcGFyYXRvciBUaW1lU3BlYyBUaW1lWm9uZU9mZnNldFJlcXVpcmVkCisKKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVPZmZzZXRSZXF1
aXJlZAorICAgIC8vIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQgOgorICAgIC8vICAgICBUaW1lWm9u
ZVVUQ09mZnNldCBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb25fb3B0CisKKyAgICByZXR1cm4g
cmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6
b3B0aW9uYWw8RXhhY3RUaW1lPiB7CisgICAgICAgIGF1dG8gZGF0ZXRpbWUgPSBwYXJzZURhdGVU
aW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghZGF0ZXRpbWUpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtkYXRlLCBtYXliZVRpbWUsIG1heWJlVGltZVpv
bmVdID0gZGF0ZXRpbWUudmFsdWUoKTsKKyAgICAgICAgaWYgKCFtYXliZVRpbWVab25lIHx8ICgh
bWF5YmVUaW1lWm9uZS0+bV96ICYmICFtYXliZVRpbWVab25lLT5tX29mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAvLyBGSVhNRTogcGFyc2UgY2FsZW5k
YXIgYW5ub3RhdGlvbgorICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBQbGFpblRpbWUgdGltZTsKKyAgICAgICAg
aWYgKG1heWJlVGltZSkKKyAgICAgICAgICAgIHRpbWUgPSBtYXliZVRpbWUudmFsdWUoKTsKKwor
ICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG1heWJlVGltZVpvbmUtPm1feiA/IDAgOiAqbWF5YmVU
aW1lWm9uZS0+bV9vZmZzZXQ7CisgICAgICAgIHJldHVybiB7IEV4YWN0VGltZTo6ZnJvbUlTT1Bh
cnRzQW5kT2Zmc2V0KGRhdGUueWVhcigpLCBkYXRlLm1vbnRoKCksIGRhdGUuZGF5KCksIHRpbWUu
aG91cigpLCB0aW1lLm1pbnV0ZSgpLCB0aW1lLnNlY29uZCgpLCB0aW1lLm1pbGxpc2Vjb25kKCks
IHRpbWUubWljcm9zZWNvbmQoKSwgdGltZS5uYW5vc2Vjb25kKCksIG9mZnNldCkgfTsKKyAgICB9
KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwtZm9ybWF0dGltZXpvbmVvZmZzZXRzdHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNl
dFN0cmluZyhpbnQ2NF90IG9mZnNldCkKIHsKQEAgLTk2OSw1ICsxMDAyLDEyOSBAQCBib29sIGlz
VmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24pCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK0V4YWN0VGltZSBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChpbnQzMl90
IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2lnbmVkIGgsIHVuc2lnbmVkIG1pbiwgdW5z
aWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1pY3JvcywgdW5zaWduZWQgbnMsIGludDY0
X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCh5ID49IC05OTk5OTkgJiYgeSA8PSA5OTk5OTkpOwor
ICAgIEFTU0VSVChtb24gPj0gMSAmJiBtb24gPD0gMTIpOworICAgIEFTU0VSVChkID49IDEgJiYg
ZCA8PSAzMSk7CisgICAgQVNTRVJUKGggPj0gMCAmJiBoIDw9IDIzKTsKKyAgICBBU1NFUlQobWlu
ID49IDAgJiYgbWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA+PSAwICYmIHMgPD0gNTkpOworICAg
IEFTU0VSVChtcyA+PSAwICYmIG1zIDw9IDk5OSk7CisgICAgQVNTRVJUKG1pY3JvcyA+PSAwICYm
IG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA+PSAwICYmIG5zIDw9IDk5OSk7CisKKyAg
ICBkb3VibGUgZGF0ZURheXMgPSBkYXRlVG9EYXlzRnJvbTE5NzAoeSwgbW9uIC0gMSwgZCk7Cisg
ICAgZG91YmxlIHRpbWVNcyA9IHRpbWVUb01TKGgsIG1pbiwgcywgbXMpOworICAgIGRvdWJsZSB1
dGNNcyA9IGRhdGVEYXlzICogbXNQZXJEYXkgKyB0aW1lTXM7CisgICAgSW50MTI4IHV0Y05zID0g
c3RhdGljX2Nhc3Q8SW50MTI4Pih1dGNNcykgKiAxJzAwMCcwMDAgKyBtaWNyb3MgKiAxMDAwICsg
bnM7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHV0Y05zIC0gb2Zmc2V0IH07Cit9CisKK3VzaW5n
IENoZWNrZWRJbnQxMjggPSBDaGVja2VkPEludDEyOCwgUmVjb3JkT3ZlcmZsb3c+OworCitzdGF0
aWMgQ2hlY2tlZEludDEyOCBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGRvdWJsZSBuKQorewor
ICAgIC8vIEJhc2VkIG9uIF9fZml4ZGZ0aSgpIGFuZCBfX2ZpeHVuc2RmdGkoKSBmcm9tIGNvbXBp
bGVyX3J0OgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9i
L2YzNjcxZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGli
L2J1aWx0aW5zL2ZwX2ZpeGludF9pbXBsLmluYworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9s
bHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgz
YjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeHVpbnRfaW1wbC5pbmMKKworICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IHNpZ25pZmljYW5kQml0cyA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6ZGlnaXRzIC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBleHBvbmVu
dEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6ZGlnaXRzIC0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZXhw
b25lbnRCaWFzID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXhfZXhwb25lbnQgLSAx
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgaW1wbGljaXRCaXQgPSB1aW50NjRfdCB7
IDEgfSA8PCBzaWduaWZpY2FuZEJpdHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBz
aWduaWZpY2FuZE1hc2sgPSBpbXBsaWNpdEJpdCAtIHVpbnQ2NF90IHsgMSB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbk1hc2sgPSB1aW50NjRfdCB7IDEgfSA8PCAoc2lnbmlm
aWNhbmRCaXRzICsgZXhwb25lbnRCaXRzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IGFic01hc2sgPSBzaWduTWFzayAtIHVpbnQ2NF90IHsgMSB9OworCisgICAgLy8gQnJlYWsgbiBp
bnRvIHNpZ24sIGV4cG9uZW50LCBzaWduaWZpY2FuZCBwYXJ0cy4KKyAgICBjb25zdCB1aW50NjRf
dCBiaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmbik7CisgICAgY29uc3QgdWlu
dDY0X3QgbkFicyA9IGJpdHMgJiBhYnNNYXNrOworICAgIGNvbnN0IGludCBzaWduID0gYml0cyAm
IHNpZ25NYXNrID8gLTEgOiAxOworICAgIGNvbnN0IGludCBleHBvbmVudCA9IChuQWJzID4+IHNp
Z25pZmljYW5kQml0cykgLSBleHBvbmVudEJpYXM7CisgICAgY29uc3QgdWludDY0X3Qgc2lnbmlm
aWNhbmQgPSAobkFicyAmIHNpZ25pZmljYW5kTWFzaykgfCBpbXBsaWNpdEJpdDsKKworICAgIC8v
IElmIGV4cG9uZW50IGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHplcm8uCisgICAgaWYgKGV4
cG9uZW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHsgMCB9OworCisgICAgLy8gSWYgdGhlIHZhbHVl
IGlzIHRvbyBsYXJnZSBmb3IgdGhlIGludGVnZXIgdHlwZSwgb3ZlcmZsb3cuCisgICAgaWYgKGV4
cG9uZW50ID49IDEyOCkKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpSZXN1bHRPdmVyZmxvd2VkIH07
CisKKyAgICAvLyBJZiAwIDw9IGV4cG9uZW50IDwgc2lnbmlmaWNhbmRCaXRzLCByaWdodCBzaGlm
dCB0byBnZXQgdGhlIHJlc3VsdC4KKyAgICAvLyBPdGhlcndpc2UsIHNoaWZ0IGxlZnQuCisgICAg
SW50MTI4IHJlc3VsdCB7IHNpZ25pZmljYW5kIH07CisgICAgaWYgKGV4cG9uZW50IDwgc2lnbmlm
aWNhbmRCaXRzKQorICAgICAgICByZXN1bHQgPj49IHNpZ25pZmljYW5kQml0cyAtIGV4cG9uZW50
OworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0IDw8PSBleHBvbmVudCAtIHNpZ25pZmljYW5kQml0
czsKKyAgICByZXN1bHQgKj0gc2lnbjsKKyAgICByZXR1cm4geyByZXN1bHQgfTsKK30KKworc3Rk
OjpvcHRpb25hbDxFeGFjdFRpbWU+IEV4YWN0VGltZTo6YWRkKER1cmF0aW9uIGR1cmF0aW9uKSBj
b25zdAoreworICAgIEFTU0VSVCghZHVyYXRpb24ueWVhcnMoKSk7CisgICAgQVNTRVJUKCFkdXJh
dGlvbi5tb250aHMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi53ZWVrcygpKTsKKyAgICBBU1NF
UlQoIWR1cmF0aW9uLmRheXMoKSk7CisKKyAgICBDaGVja2VkSW50MTI4IHJlc3VsdE5zIHsgbV9l
cG9jaE5hbm9zZWNvbmRzIH07CisKKyAgICAvLyBUaGUgZHVyYXRpb24ncyBob3VycywgbWludXRl
cywgc2Vjb25kcywgYW5kIG1pbGxpc2Vjb25kcyBzaG91bGQgYmUKKyAgICAvLyBhYmxlIHRvIGJl
IGNhc3QgaW50byBhIDY0LWJpdCBpbnQuIDIqMWU4IDI0LWhvdXIgZGF5cyBpcyB0aGUgbWF4aW11
bQorICAgIC8vIHRpbWUgc3BhbiBmb3IgZXhhY3QgdGltZSwgc28gaWYgd2UgYWxyZWFkeSBrbm93
IHRoYXQgdGhlIGR1cmF0aW9uIGV4Y2VlZHMKKyAgICAvLyB0aGF0LCB0aGVuIHdlIGNhbiBiYWls
IG91dC4KKworICAgIENoZWNrZWRJbnQxMjggaG91cnMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50
MTI4KGR1cmF0aW9uLmhvdXJzKCkpOworICAgIHJlc3VsdE5zICs9IGhvdXJzICogRXhhY3RUaW1l
Ojpuc1BlckhvdXI7CisgICAgQ2hlY2tlZEludDEyOCBtaW51dGVzID0gY2hlY2tlZENhc3REb3Vi
bGVUb0ludDEyOChkdXJhdGlvbi5taW51dGVzKCkpOworICAgIHJlc3VsdE5zICs9IG1pbnV0ZXMg
KiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIENoZWNrZWRJbnQxMjggc2Vjb25kcyA9IGNo
ZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24uc2Vjb25kcygpKTsKKyAgICByZXN1bHRO
cyArPSBzZWNvbmRzICogRXhhY3RUaW1lOjpuc1BlclNlY29uZDsKKyAgICBDaGVja2VkSW50MTI4
IG1pbGxpc2Vjb25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWlsbGlz
ZWNvbmRzKCkpOworICAgIHJlc3VsdE5zICs9IG1pbGxpc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQ
ZXJNaWxsaXNlY29uZDsKKyAgICBDaGVja2VkSW50MTI4IG1pY3Jvc2Vjb25kcyA9IGNoZWNrZWRD
YXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWljcm9zZWNvbmRzKCkpOworICAgIHJlc3VsdE5z
ICs9IG1pY3Jvc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZDsKKyAgICByZXN1
bHROcyArPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkp
OworICAgIGlmIChyZXN1bHROcy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBFeGFjdFRpbWUgcmVzdWx0IHsgcmVzdWx0TnMudmFsdWUoKSB9Owor
ICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitJbnQxMjggRXhhY3RUaW1lOjpyb3VuZChJbnQxMjgg
cXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5n
TW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50MTI4IGluY3JlbWVudE5zIHsgaW5jcmVtZW50
IH07CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IGlu
Y3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJIb3VyOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TWludXRlOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWludXRlOyBi
cmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFj
dFRpbWU6Om5zUGVyU2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlz
ZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZDsgYnJlYWs7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFj
dFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpO
YW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHks
IGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOworfQorCisvLyBEaWZmZXJlbmNlSW5zdGFudCAo
IG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUg
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZGlm
ZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRpbWU6OmRpZmZlcmVuY2UoRXhhY3RUaW1lIG90
aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUg
cm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIEludDEyOCBkaWZmID0gb3RoZXIubV9lcG9jaE5h
bm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIHJldHVybiByb3VuZChkaWZmLCBp
bmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKK0V4YWN0VGltZSBFeGFjdFRpbWU6
OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9k
ZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHJvdW5kKG1f
ZXBvY2hOYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1bml0LCByb3VuZGluZ01vZGUpIH07Cit9CisK
IH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGM3NDI0YWU5MzFlZmUxYjUwZGMwYWNkMjJi
ZjIxYjk5NzA5NTZhNmYuLjFjYmI2YjRmZDgwNWQxNTcxMmM5ODViOWRjYzgyNDE3N2VlNzkyNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5o
IgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2Ug
SVNPODYwMSB7CkBAIC03OSw2ICs4MCwxMjIgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PGRv
dWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEgeyB9OwogfTsKIAorY2xhc3MgRXhh
Y3RUaW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChFeGFjdFRpbWUpOworcHVibGlj
OgorICAgIGNvbnN0ZXhwciBFeGFjdFRpbWUoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIEV4
YWN0VGltZShjb25zdCBFeGFjdFRpbWUmKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIGV4cGxp
Y2l0IEV4YWN0VGltZShJbnQxMjggZXBvY2hOYW5vc2Vjb25kcykgOiBtX2Vwb2NoTmFub3NlY29u
ZHMoZXBvY2hOYW5vc2Vjb25kcykgeyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGlt
ZSBmcm9tRXBvY2hTZWNvbmRzKGludDY0X3QgZXBvY2hTZWNvbmRzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaFNlY29uZHMgfSAqIEV4YWN0VGltZTo6bnNQ
ZXJTZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBv
Y2hNaWxsaXNlY29uZHMoaW50NjRfdCBlcG9jaE1pbGxpc2Vjb25kcykKKyAgICB7CisgICAgICAg
IHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWxsaXNlY29uZHMgfSAqIEV4YWN0VGlt
ZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgRXhhY3RU
aW1lIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyhpbnQ2NF90IGVwb2NoTWljcm9zZWNvbmRzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaE1pY3Jvc2Vjb25kcyB9
ICogRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIEV4YWN0
VGltZSBmcm9tSVNPUGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhf
dCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1
bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNldCk7CisKKyAgICBjb25z
dGV4cHIgaW50NjRfdCBlcG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2No
TmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgY29uc3Rl
eHByIGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vw
b2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAg
ICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0
X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7Cisg
ICAgfQorICAgIGNvbnN0ZXhwciBJbnQxMjggZXBvY2hOYW5vc2Vjb25kcygpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5v
c2Vjb25kczsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgaW50IG5hbm9zZWNvbmRzRnJhY3Rpb24o
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9lcG9jaE5h
bm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7CisgICAgfQorCisgICAgU3RyaW5n
IGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25kcyA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBhc1N0cmluZ0ltcGwoYnVpbGRlciwgLW1fZXBv
Y2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXNTdHJpbmdJbXBs
KGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxpZEVwb2NoTmFub3NlY29uZHMgKCBlcG9j
aE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcworICAgIGNvbnN0ZXhwciBib29s
IGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25k
cyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vjb25kcyA8PSBFeGFjdFRp
bWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChFeGFj
dFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNv
bmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0K
KyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0gb3RoZXIubV9lcG9jaE5h
bm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KEV4YWN0VGlt
ZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMg
IT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVyLm1fZXBvY2hOYW5vc2Vj
b25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gYWRkKER1cmF0aW9u
KSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShFeGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVk
IGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNvbnN0OworICAgIEV4YWN0
VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2Rl
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBkYXlSYW5n
ZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAvLyAxZTggZGF5cworICAgIHN0YXRpYyBjb25z
dGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQgeyAxMDAwIH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7IDEnMDAwJzAwMCB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRlID0gbnNQZXJTZWNvbmQgKiA2MDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEludDEyOCBuc1BlckhvdXIgPSBuc1Blck1pbnV0ZSAqIDYwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZhbHVlID0gLWRheVJhbmdlU2Vjb25kcyAqIG5z
UGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1heFZhbHVlID0gZGF5UmFu
Z2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAgICBzdGF0aWMgdm9pZCBhc1N0cmluZ0ltcGwo
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCB2YWx1ZSAvIDEw
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlICUg
MTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50MTI4IHJvdW5kKEludDEyOCBxdWFu
dGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7CisK
KyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRzIHsgfTsKK307CisKIGNsYXNzIFBsYWluVGlt
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1lKTsKIHB1YmxpYzoKQEAg
LTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmcoUGxhaW5UaW1lLCBz
dGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbgogCiBib29sIGlzVmFsaWRE
dXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFy
c2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2M2U5NWJlZjAwNjIwYTMwNmEzYTU1ZjA0YTY1
NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNlNzA4ZDFhMmZmNTg0YjBhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAg
LTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAgIFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0
ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBz
dGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6IHVpbnQ4X3QgeyBOb25lLCBOYXJyb3csIFNo
b3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBFcmEgOiB1aW50OF90IHsgTm9uZSwgTmFycm93
LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgWWVhciA6IHVpbnQ4X3QgeyBOb25lLCBU
d29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggNzU4NGNm
MGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcxY2YzYi4uNmU0ZDYyNWM1MDJmMjBjNDNiZjlk
NjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCisvLyBIYW5kbGVE
YXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQsIHggKQorLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaGFuZGxlZGF0ZXRpbWV2YWx1ZQorZG91Ymxl
IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlm
ICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGF0
ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKworICAgIC8vIEZJWE1FOgorICAg
IC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRlbXBvcmFsIHR5cGVzCisgICAgLy8gIC0gV29y
ayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8vICAtIFJldHVybiBVRGF0ZUZvcm1hdCBhbmQg
VURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCB4KTsK
KyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIGluc3RhbnQtPmV4YWN0VGltZSgpLmVw
b2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFdURjo6
dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmplY3QpKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTAwLDE0ICsxMjIsOCBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNH
bG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVl
IGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJsZSB2YWx1ZTsKLQotICAg
IGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50
b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAgICB2YWx1ZSA9IFdURjo6
dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQorICAgIGRvdWJsZSB2
YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmpl
Y3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdChn
bG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTU2LDE0ICsxNzIsOCBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFy
dHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQi
X3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAg
ZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFs
dWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRl
VGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7
CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xvYmFsT2IKICAgICBpZiAo
c3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3Rh
cnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3Vi
bGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGds
b2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFu
ZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
dGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CkBAIC0yMTIsOSArMjIyLDkgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmlu
ZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlz
IHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVU
aW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVu
ZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUg
ZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxP
YmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1S
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4g
ZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAK
aW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFlZGU1NDMwY2JmMmYyNDFiMi4uNGI1OTZjMjdh
NmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2ICsyMzIsNjIgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFs
dWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVjdCwgdW5zaWduZWRWYWx1
ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3Jl
YXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAgIFVJbnQxMjggdW5zaWduZWRWYWx1ZTsKKyAg
ICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgIHVuc2ln
bmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4PigtKHZhbHVlICsgMSkpICsgMTsKKyAgICAg
ICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIHVuc2lnbmVkVmFsdWUgPSB2YWx1
ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9IFVJTlQ2NF9NQVgpCisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2JqZWN0LCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSksIHNpZ24pKTsKKworICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAgICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVh
dGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIERpZ2l0IGxvd0JpdHMgPSBzdGF0aWNfY2Fz
dDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICAgICAg
RGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAgICAgICBBU1NFUlQoaGlnaEJpdHMpOworCisg
ICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93Qml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0
RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBiaWdJbnQtPnNldFNpZ24oc2lnbik7CisgICAg
ICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0g
NCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICBEaWdpdCBkaWdpdDEgPSBzdGF0aWNfY2Fz
dDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gMzIpKTsKKyAg
ICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBEaWdpdCBkaWdpdDMgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gOTYpKTsKKworICAg
IEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKworICAgIGludCBsZW5ndGggPSBkaWdpdDMgPyA0
IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChnbG9iYWxPYmpl
Y3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisK
KyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0MCk7CisgICAgYmlnSW50LT5zZXREaWdpdCgx
LCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMiwgZGlnaXQyKTsKKyAgICBpZiAoZGln
aXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDMsIGRpZ2l0Myk7CisgICAgYmlnSW50LT5z
ZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKIEpTQmlnSW50KiBKU0JpZ0lu
dDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBib29sIHZhbHVlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFjMWQ4ZmI2MTAxYWI2OGQ5NzBmMDJiNzFlZGNi
MzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2FlMmExODYxMTYzM2I2ZGE2Nzk0Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUg
PHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNiArNzUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0Kiwg
dWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCog
Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGludDY0X3QgdmFsdWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVp
bnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNy
ZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQxMjggdmFsdWUpOwogICAgIHN0YXRpYyBKU0Jp
Z0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGJvb2wgdmFsdWUpOwogICAgIHN0YXRp
YyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSk7CiAK
QEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvVWludDY0SGVhcChKU0Jp
Z0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQsIG1fZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGRhZTliM2E5
YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJjZmYuLjUyMTlmOGY3MjQyYjg2Zjk0MGU4Mjgy
MzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2IEBAIExvY2FsVGltZU9mZnNldCBEYXRlQ2Fj
aGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWlsbGlzZWNvbmRzRnJvbUVwb2NoLCBXVEY6OlRp
CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3RhdGljIGlubGluZSBkb3VibGUgdGltZVRvTVMo
ZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKLXsKLSAgICBy
ZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRz
UGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Ci19Ci0KIGRvdWJsZSBE
YXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYg
dCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogewog
ICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFyKCksIHQubW9udGgoKSwg
dC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA3NGZmMzZkNmI5ZjJiOTE2MzQ3NzcwY2VlZTI5MWU4OGI3YjNh
OWVjLi43ZWM4ZGM2ZTkwYjJmYmUxNGUwMDE4YWYxOTRiYjNhZTg4MmY0Y2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMTAs
NiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQog
ICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAg
ICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAg
ICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGUoaW5p
dC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90eXBlKSk7CisgICAgICAgICAgICB9KTsKKwog
ICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpA
QCAtMjE1Nyw2ICsyMTY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbklt
cGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9j
YWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0
aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1faW5zdGFudFN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCA5NGUxMmEyM2JiYWIyNTM1OTY3NmQwYjE5Y2JmMjdlYjQyODNi
ZGQ0Li45MGJlYTY3Y2QwODViNzNiZjFkZGQ4ZGVmYzBlOWFiZGI5NDM1YTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMzNCw2ICsz
MzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGltZVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV90aW1lWm9uZVN0cnVj
dHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogY2Fs
ZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2R1cmF0aW9u
U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogaW5zdGFudFN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3Rp
bWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDkzNGJlYjA5YTcwYjc2ZmZh
MmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1NDY2ZDk4ZWZmOWY2NGZkMDk3OWRjOTAwNzQx
YmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1LDMxIEBAIFRlbXBvcmFsRHVyYXRpb24qIFRl
bXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCisvLyBUb0xpbWl0
ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxEdXJhdGlvbkxpa2UsIGRpc2FsbG93ZWRGaWVs
ZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
dG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJh
dGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2Fs
bG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSVNPODYwMTo6RHVyYXRp
b24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghaXNWYWxp
ZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUg
YW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
CisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IGRpc2FsbG93ZWRVbml0cykgeworICAgICAg
ICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJBZGRpbmcgIl9zLCB0ZW1wb3JhbFVuaXRQbHVy
YWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1YmxpY05hbWUoKSwgIiBub3Qgc3VwcG9ydGVkIGJ5
IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3Mp
KTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZy
b20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDgyZjJkNWQ2NWMyMmFjNGM0MDdj
ODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDljZGRkNzc1YjExNWQxN2QxZTFjZWZjMTQyNzdk
NDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAog
ICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b1RlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9MaW1pdGVk
RHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpOwogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0
aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTVmFsdWUg
Y29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hOGU5ODE4NWIyZjJmNDc5YzZiMzA0M2U0ZDg3YTRlNGZiZDFmNGE4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApA
QCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRl
ICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnQpIH07CisK
K1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5z
dGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAg
LCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9y
YWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6
RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7
CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJ
bnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50KHZtLCBzdHJ1Y3R1cmUsIGV4YWN0VGlt
ZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsK
K30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50ICggZXBvY2hOYW5vc2Vjb25kcyBbICwgbmV3
VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5z
dGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084
NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGV4YWN0VGlt
ZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVk
IHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6
IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCitUZW1w
b3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzID0g
dmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoZXBvY2hOYW5vc2Vj
b25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB0b3RhbCA9IGVwb2NoTmFub3Nl
Y29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFj
dFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9i
amVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworICAgIH0KKyNlbmRpZgorCisg
ICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsKKyAgICBJbnQxMjggdG90YWw7CisgICAgaWYg
Y29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KSB7CisgICAgICAgIEludDEy
OCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAg
ICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEp
IDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBiaWdpbnQtPmxlbmd0aCgpID4gMiA/IGJpZ2lu
dC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRvdGFsID0gZDIgPDwgNjQgfCBkMSA8PCAzMiB8
IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDM7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihKU0JpZ0ludDo6RGlnaXQpID09IDgpOwor
ICAgICAgICBJbnQxMjggbG93IHsgYmlnaW50LT5sZW5ndGgoKSA+IDAgPyBiaWdpbnQtPmRpZ2l0
KDApIDogMCB9OworICAgICAgICBJbnQxMjggaGlnaCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8g
YmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAgICAgdG90YWwgPSBoaWdoIDw8IDY0IHwgbG93
OworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisgICAgfQor
ICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCAqIChiaWdpbnQtPnNpZ24o
KSA/IC0xIDogMSkgfTsKKworICAgIGlmIChiaWdJbnRUb29Mb25nIHx8ICFleGFjdFRpbWUuaXNW
YWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZyA9IGJpZ2ludC0+dG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCAxMCk7CisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5n
ID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAgICAgIH0KKworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlbGxpcHNpemVBdCgxMDAs
IGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHRoZSBzdXBw
b3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0
dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisK
Ky8vIFRvVGVtcG9yYWxJbnN0YW50ICggaXRlbSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsaW5zdGFudAorVGVtcG9yYWxJbnN0
YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbEluc3RhbnQ+KHZtKSkKKyAgICAgICAgcmV0dXJu
IGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpOworCisgICAgLy8gRklYTUU6IHdo
ZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5kcworICAgIC8vIGlmIChpdGVtVmFsdWUuaW5o
ZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2bSkpCisgICAgLy8gICAgcmV0dXJuIFRlbXBv
cmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwg
anNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+KGl0ZW1WYWx1ZSktPmVwb2NoVGltZSgpKTsK
KworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGF1dG8g
cGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFyc2VJbnN0YW50KHN0cmluZyk7CisgICAgaWYg
KCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVsbGlwc2l6ZUF0KDEwMCwgc3RyaW5nKSwgIicg
aXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFudCBzdHJpbmciX3MpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlD
cmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFyc2VkRXhhY3RUaW1lLnZhbHVlKCkpKTsKK30K
KworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICggaXRlbSApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb20KK1RlbXBvcmFsSW5z
dGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0YW50Pih2bSkpIHsKKyAg
ICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IGpzQ2FzdDxUZW1wb3JhbEluc3Rh
bnQqPihpdGVtVmFsdWUpLT5leGFjdFRpbWUoKTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsSW5z
dGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RU
aW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9JbnN0YW50KGdsb2JhbE9iamVjdCwgaXRlbVZh
bHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzICggZXBvY2hT
ZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91
YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBO
dW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaFNlY29uZHMpKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5n
KGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBz
ZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaFNl
Y29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNy
ZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMgKCBlcG9jaE1pbGxpc2Vjb25kcyApCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZy
b21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZy
b21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRv
dWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAgMQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2No
TWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRl
Z2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2
MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRzKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2Jq
ZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNy
b3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pY3Jvc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzVmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZXBvY2hNaWNyb3NlY29u
ZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRvQmlnSW50KGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKGVwb2NoTWljcm9zZWNvbmRzLmlzQmlnSW50MzIoKSkgeworICAgICAgICBpbnQz
Ml90IG1pY3Jvc2Vjb25kcyA9IGVwb2NoTWljcm9zZWNvbmRzLmJpZ0ludDMyQXNJbnQzMigpOwor
ICAgICAgICBhdXRvIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlj
cm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAgICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3Ry
dWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorI2VuZGlmCisKKyAgICBKU0JpZ0ludCogYmln
aW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9zZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRv
b0xvbmc7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KQor
ICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisgICAgZWxzZSB7
CisgICAgICAgIEFTU0VSVChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA4KTsKKyAgICAgICAg
YmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAxOworICAgIH0KKyAgICBpbnQ2NF90
IG1pY3Jvc2Vjb25kcyA9IEpTQmlnSW50Ojp0b0JpZ0ludDY0KGJpZ2ludCk7CisgICAgYXV0byBl
eGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNy
b3NlY29uZHMpOworCisgICAgaWYgKGJpZ0ludFRvb0xvbmcgfHwgIWV4YWN0VGltZS5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9i
YWxPYmplY3QsIDEwKTsKKyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAg
ICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAi
VGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAgICAgfQorCisgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJn
QXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCBy
YW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1
Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hO
YW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2huYW5vc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hOYW5vc2Vjb25kc1ZhbHVl
KQoreworICAgIHJldHVybiB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXBvY2hOYW5v
c2Vjb25kc1ZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5jb21wYXJlICggb25lLCB0
d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
aW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9uZVZhbHVlLCBKU1ZhbHVlIHR3b1ZhbHVl
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG9uZSA9IHRv
SW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiB0d28gPSB0b0luc3RhbnQoZ2xv
YmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpID4gdHdvLT5leGFjdFRpbWUoKSkKKyAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpIDwgdHdvLT5l
eGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKC0xKTsKKyAgICByZXR1cm4ganNO
dW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsSW5zdGFudDo6ZGlmZmVy
ZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbEluc3RhbnQqIG90aGVy
LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3Qs
IG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBU
ZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0
OjpOYW5vc2Vjb25kKTsKKworICAgIFRlbXBvcmFsVW5pdCBkZWZhdWx0TGFyZ2VzdFVuaXQgPSBz
dGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBhdXRvIGxh
cmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9LCBk
ZWZhdWx0TGFyZ2VzdFVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihkZWZhdWx0
TGFyZ2VzdFVuaXQpOworCisgICAgaWYgKHNtYWxsZXN0ICYmIGxhcmdlc3QgJiYgc21hbGxlc3Qg
PCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2Rl
ID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01v
ZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1heEluY3JlbWVudCA9IG1heGltdW1Sb3VuZGluZ0luY3Jl
bWVudChzbWFsbGVzdFVuaXQpOworICAgIEFTU0VSVChtYXhJbmNyZW1lbnQgJiYgKm1heEluY3Jl
bWVudCA8PSAxMDAwKTsgLy8gdW5ib3VuZGVkIGluY3JlbWVudHMgYXJlIGltcG9zc2libGUgd2l0
aCBUZW1wb3JhbC5JbnN0YW50CisgICAgdW5zaWduZWQgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3Vu
ZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heEluY3JlbWVudCwgZmFsc2Up
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBJbnQxMjggcm91
bmRlZERpZmYgPSBleGFjdFRpbWUoKS5kaWZmZXJlbmNlKG90aGVyLT5leGFjdFRpbWUoKSwgaW5j
cmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAgLy8gTk9URTogRHVyYXRp
b24gZmllbGRzIGFyZSBjdXJyZW50bHkgZG91YmxlcywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YK
KyAgICAvLyBuYW5vc2Vjb25kcyBtYXkgbm90IGZpdCBpbiBhIGRvdWJsZS4gVGhpcyBtYXkgbmVl
ZCB0byBjaGFuZ2UgaWYgdGhlCisgICAgLy8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHVy
YXRpb24gY2hhbmdlcy4KKyAgICBBU1NFUlQocm91bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwIDwg
SU5UNjRfTUFYKTsKKyAgICBkb3VibGUgc2Vjb25kcyB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rh
dGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBk
b3VibGUgbmFub3NlY29uZHNSZW1haW5kZXIgeyBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19j
YXN0PGludDY0X3Q+KHJvdW5kZWREaWZmICUgMScwMDAnMDAwJzAwMCkpIH07CisgICAgSVNPODYw
MTo6RHVyYXRpb24gcmVzdWx0IHsgMCwgMCwgMCwgMCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFu
b3NlY29uZHNSZW1haW5kZXIgfTsKKworICAgIFRlbXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVz
dWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGRvdWJs
ZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQpCit7CisgICAgc3dp
dGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJu
IDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHJldHVybiAxNDQwOworICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVybiA4NjQwMDsKKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0ZTc7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6
Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFu
b3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlllYXI6Cisg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVr
OgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6CisgICAgZGVmYXVsdDoKKyAgICAgICAgeyB9
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0lTTzg2MDE6
OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9i
amVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRl
bXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBh
IHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxV
bml0OjpOYW5vc2Vjb25kKTsKKworICAgIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1w
b3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6SGFs
ZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRv
dWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgbWF4aW11bUluY3JlbWVudChzbWFsbGVzdFVuaXQpLCB0cnVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIGV4YWN0VGltZSgpLnJv
dW5kKGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworfQorCisvLyBUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5
cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2Jq
ZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9TdHJp
bmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB0
aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
aWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGltZVpvbmUgPSBU
ZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9iamVjdCwgdGltZVpvbmVWYWx1ZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgUHJlY2lz
aW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSb3VuZGlu
Z01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3
ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnBy
ZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01v
ZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcodGltZVpvbmUpOworCisgICAgSVNP
ODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7IGV4YWN0VGltZSgpLnJvdW5kKGRhdGEuaW5j
cmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSkgfTsKKworICAgIC8vIEZJWE1FOiBNaXNz
aW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJl
ICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50KHJvdW5kZWROcykuCisgICAgLy8gLi4uCisgICAgLy8g
MS4gSWYgX291dHB1dFRpbWVab25lXyBpcyAqdW5kZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4g
U2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8gISBDcmVhdGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiop
LgorICAgIC8vIDEuIExldCBfaXNvQ2FsZW5kYXJfIGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCku
CisgICAgLy8gMS4gTGV0IF9kYXRlVGltZV8gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRh
dGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9pbnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisg
ICAgSlNPYmplY3QqIG91dHB1dFRpbWVab25lID0gdGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRp
bWVab25lKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklY
TUU6IFRlbXBvcmFsLkluc3RhbnQudG9TdHJpbmcoe3RpbWVab25lfSkgbm90IGltcGxlbWVudGVk
IHlldCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIHRvU3Ry
aW5nKG5ld0V4YWN0VGltZSwgdGltZVpvbmUsIGRhdGEpOworfQorCisvLyBUZW1wb3JhbEluc3Rh
bnRUb1N0cmluZyAoIGluc3RhbnQsIHRpbWVab25lLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9z
dHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKElTTzg2MDE6OkV4YWN0VGlt
ZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24p
Cit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRpbWUgeyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxpc2Vjb25kcygpKSwgTG9jYWxUaW1lT2Zmc2V0
IHsgfSB9OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIC8vIElmIHRoZSB5ZWFy
IGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAxMDAwIGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50
IHRvCisgICAgLy8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisg
ICAgdW5zaWduZWQgeWVhckxlbmd0aCA9IDQ7CisgICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLnll
YXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpIDwgMTAwMCkgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPCAwID8gJy0nIDogJysn
KTsKKyAgICAgICAgeWVhckxlbmd0aCA9IDY7CisgICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFyTGVuZ3RoLCBzdGQ6OmFicyhncmVnb3JpYW5EYXRlVGlt
ZS55ZWFyKCkpKSwKKyAgICAgICAgJy0nLCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5t
b250aCgpICsgMSksCisgICAgICAgICctJywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUu
bW9udGhEYXkoKSksCisgICAgICAgICdUJywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUu
aG91cigpKSwKKyAgICAgICAgJzonLCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5taW51
dGUoKSkpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG5zUGVyU2Vjb25kIHsgMScwMDAn
MDAwJzAwMCB9OworICAgIGludCBmcmFjdGlvbiB7IGV4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0
aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAwKQorICAgICAgICBmcmFjdGlvbiArPSBuc1Bl
clNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KGJ1aWxkZXIsIGdyZWdvcmlh
bkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsKKworICAgIGlmICh0aW1l
Wm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVzIG9uIFRpbWVab25lOgor
ICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVTdHJpbmdfIGJlID8gQnVpbHRpblRpbWVab25l
R2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8sIF9pbnN0YW50XykuCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7
CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5MzdjN2VmYTNhZDQwNTZjMzliYTEyNmEzOWFkOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YWNrZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudCBmaW5h
bCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsSW5zdGFudFNwYWNlPG1vZGU+
KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgSVNPODYwMTo6RXhhY3RUaW1lKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50
KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiwgSVNPODYwMTo6RXhhY3RUaW1lLCBT
dHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3Jl
YXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFN0cnVjdHVyZSogPSBudWxscHRy
KTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFRlbXBv
cmFsSW5zdGFudCogdG9JbnN0YW50KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIFRlbXBvcmFsSW5zdGFudCogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAg
IHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWxsaXNl
Y29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50KiBmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAg
ICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRp
bWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGltZS5nZXQoKTsgfQorCisgICAgSVNPODYwMTo6
RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsSW5zdGFudCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIHJvdW5kKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0
cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxscHRyLCBQcmVjaXNpb25EYXRhIHByZWNpc2lv
biA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAx
IH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9TdHJpbmcoZXhhY3RUaW1lKCksIHRp
bWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3Rh
bnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpFeGFjdFRpbWUpOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAx
OjpFeGFjdFRpbWU+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsK
KyAgICBzdGF0aWMgSVNPODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCopOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhJU084NjAxOjpFeGFj
dFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7CisKKyAgICBQYWNrZWQ8
SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4YWN0VGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYTQyODBhMWNlNjcwOTBhNjc4
MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwx
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29u
ZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jv
c2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsK
KworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlCisg
IGZyb20gICAgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaFNlY29u
ZHMgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pbGxpc2Vjb25kcyAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZy
b21FcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVw
b2NoTmFub3NlY29uZHMgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAg
ICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3RvciogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUp
Cit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgaW5zdGFudFByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1
Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxJbnN0YW50
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5z
dGFudCk7CisKK1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0YW50LCBjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpCit7
Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiSW5zdGFudCJfcywgUHJvcGVydHlBZGRpdGlv
bk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBpbnN0YW50UHJvdG90
eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgaW5zdGFudFByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1w
b3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJn
ZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIGluc3RhbnRTdHJ1Y3R1cmUs
IG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5J
bnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIHN0cnVjdHVyZSkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0
aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnN0YW50IikpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29u
ZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hN
aWxsaXNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNv
bmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNkZWRlMmEyMTg5NWE4ZjJmNjk4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlOworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5j
dGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGlj
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDk4Y2FiYjIwMDU0NWJkNDdhNTQy
MmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDMyNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
RnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVy
RXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlj
cm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMpOworCit9CisKKyNpbmNsdWRlICJU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3Jh
bC5JbnN0YW50IiwgJkJhc2U6OnNfaW5mbywgJmluc3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8q
IFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFu
dFByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0
cmFjdCAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwgICAgICAgICAgICAgIHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIHNpbmNlICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2lu
Y2UgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAg
ICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1JvdW5kICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRvU3Ry
aW5nICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xv
Y2FsZVN0cmluZyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAg
ICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMAorICBlcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vz
c29yCisgIGVwb2NoTWlsbGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBv
Y2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9z
ZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNv
bmRzICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUqIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25z
dGV4cHIgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0
aW9uVW5pdHMgPSB7CisgICAgVGVtcG9yYWxVbml0OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6
TW9udGgsCisgICAgVGVtcG9yYWxVbml0OjpXZWVrLAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAor
fTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFu
dCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmFkZCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSVNPODYwMTo6
RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVu
aXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0
VGltZSgpLmFkZChkdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRl
IG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
Km5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
VGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
SW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxE
dXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBu
ZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAgICBp
ZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBU
ZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCAqbmV3RXhhY3RUaW1lKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGls
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0
YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAg
SVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5zdGFudC0+ZGlmZmVyZW5jZShnbG9iYWxPYmpl
Y3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNp
bmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgPSBvdGhlci0+ZGlmZmVyZW5jZShnbG9i
YWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJl
c3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0
YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90
b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKwor
ICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9w
dGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIHJlcXVp
cmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5l
d0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0
cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFs
SW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQtPmV4YWN0VGltZSgpID09IG90aGVyLT5leGFj
dFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZygg
WyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5z
dGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5z
dGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKCkpKSk7Cit9CisK
Ky8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBhIEpTQnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5n
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBJbnRsRGF0
ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBmb3JtYXR0ZXItPmluaXRpYWxpemVEYXRlVGlt
ZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGltZUZvcm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vj
b25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1h
dHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxs
aXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlw
ZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywg
dXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfcyk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RU
aW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3Rh
bnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUu
ZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RU
aW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9iYWxPYmplY3QsIGluc3RhbnQt
PmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRzKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRz
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRp
bWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIxNDY5ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJk
Nzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZShWTSYsIFN0cnVjdHVy
ZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCmluZGV4IGZmMGJjZmRjZjgyZDIyMWQxZWNiODVhOGMxYjQ2YjY1MWI0ZGI3MzUuLjg5NDZh
MGNjNjEwNDg0Zjg4MjRmNWNmZGU3Y2Y0YjczOTg1YzlkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAgLTMyLDExICszMiwxNCBA
QAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKKyNp
bmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2
ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSks
IGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlv
blN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNW
YWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQor
eworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9i
amVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBv
cmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmlu
c3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGlj
IEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2Jq
ZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1w
b3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
QGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAgQ2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5k
YXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9u
ICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlD
YWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IgICAgICAg
IERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2Jq
ZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGlt
ZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlD
YWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAg
IERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAgLTM3NCw2ICszODUsMTcgQEAgdm9pZCBmb3Jt
YXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQg
ZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8vIEZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0ICgg
c2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQsIHByZWNpc2lvbiAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1mb3Jt
YXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVj
aXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBpZiAocHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9y
YWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVybjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCc6
JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9u
KGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24ucHJlY2lzaW9uKTsKK30KKwogLy8gTWF4aW11
bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVy
YXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3Vu
ZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkKQEAgLTQzNSw2ICs0NTcsNDMgQEAgZG91
YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJv
dW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
K3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQoreworICAgIHJldHVybiB4IDwgMCA/IC14IDog
eDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggSW50MTI4CitJbnQxMjggcm91bmRO
dW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2Rl
IG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9PSAxKQorICAgICAgICByZXR1cm4geDsKKwor
ICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNyZW1lbnQ7CisgICAgSW50MTI4IHJlbWFpbmRl
ciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFyZW1haW5kZXIpCisgICAgICAgIHJldHVybiB4
OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVyIDwgMDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsK
KyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgaWYgKCFzaWduKQorICAgICAg
ICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6
OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgIHF1b3RpZW50LS07CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAgICAgIC8vICJoYWxmIHVw
IGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAoYWJzKHJlbWFpbmRlciAqIDIpID49IGluY3Jl
bWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9IHNpZ24gPyAtMSA6IDE7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGllbnQgKiBpbmNyZW1lbnQ7Cit9CisKIFRlbXBv
cmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAgIHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFs
T3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3Bl
cnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmgKaW5kZXggNzkxNTc5OGNkYjk4YWI3NDU4M2I4YzhhYzM2YTU1ZDFiNDVm
MWMxNC4uYWIzYjI5MzNmNTNhOGNhNmQ2NjFkMjZmNmQ3MTliNzc5YzJkNjQwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yMiw2ICsy
Miw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5j
bHVkZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTA1LDkgKzEwNiwx
MSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0ZW1wb3JhbEZyYWN0aW9uYWxTZWNvbmREaWdp
dHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAogUHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5n
UHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMpOwogUm91bmRpbmdN
b2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBSb3Vu
ZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRl
ciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+KTsK
K3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIHNl
Y29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNpc2lvbkRhdGEpOwogc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRl
bXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9u
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1c2l2ZSk7CiBkb3Vi
bGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5k
aW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjgsIEludDEyOCBp
bmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVudW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6
IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCAyZmFjNzM0MzU0ODllYjcwZDRkOTZlOGQyOWIzNGJkM2I2OGRiOGNmLi45Y2Y1ZmVhMDE5
ODQ5ZGI2ZTY2MDkxMGJiOTQ1MWNkMjdjMjVmYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlv
bi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxh
aW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RS
dW5uZXJVdGlscy5oIgpAQCAtMTU5Nyw2ICsxNTk4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxE
dXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxJbnN0YW50KQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1l
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxhaW5UaW1lKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGJkZjQzMWU4NGVmMDk0ODU2YmMwMjczMGM0MGZmZTZlZGFhNWMxZDYuLjZmZTQ2NzQwNWJiYjQ3
NGVjMjIzZDY5YjQ4MWIxOGQ2ZjBhZDNkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMTg3LDYgKzE4Nyw3IEBAIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9s
OwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2NsYXNzIFRlbXBvcmFsSW5zdGFudDsKIGNsYXNz
IFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBV
bmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MDEsNiArNjAyLDcgQEAgcHVibGljOgogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENh
bGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaAppbmRleCBlZmFiNGFkM2JjOWY3MGQ2N2ViNjIzZDA3MzE2MTA5Mjk5OGQzZTM0Li5m
ZjBlZjY4ZjRkNTdiYjA0NTE2YThjYWIwZWM2YjY2NzJlOGM2N2YzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmgKQEAgLTMzOCwxMiArMzM4LDIwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
SFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNP
cGVyCiAgICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJl
c3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVTRShNVUxf
T1ZFUkZMT1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRp
bl9tdWxfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQor
ICAgICAgICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gZm9yIF9faW50MTI4X3Qgb24gQ2xhbmcv
TGludXguCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDA0CisjaWYgQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKQorICAgICAgICBpZiBj
b25zdGV4cHIgKHNpemVvZihSZXN1bHRUeXBlKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5k
aWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0
aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2lmIENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5VWCkKKyAgICAgICAgfQorI2VuZGlm
IC8vIENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5VWCkKKyNlbmRpZiAvLyBVU0UoTVVMX09WRVJG
TE9XKQogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAgICAgIGlm
IChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgJiYgKHN0ZDo6bnVtZXJpY19s
aW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC8gbGhzKSA8IHJocykKQEAgLTM2NSw3ICszNzMsNiBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5
cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGxo
cyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0
aWMgaW5saW5lIGJvb2wgZGl2aWRlKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3Vs
dCkgV0FSTl9VTlVTRURfUkVUVVJOCkBAIC00MjAsMTIgKzQyNywyMCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0
aG1ldGljT3BlcgogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShMSFMgbGhzLCBSSFMg
cmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICNpZiBV
U0UoTVVMX09WRVJGTE9XKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChf
X2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBidWlsdGluIGZvciBfX2ludDEyOF90IG9u
IENsYW5nL0xpbnV4LgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQwNAorI2lmIENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5VWCkKKyAgICAg
ICAgaWYgY29uc3RleHByIChzaXplb2YoUmVzdWx0VHlwZSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSkg
eworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAo
X19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNpZiBDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpCisgICAgICAgIH0K
KyNlbmRpZiAvLyBDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpCisjZW5kaWYgLy8gVVNFKE1V
TF9PVkVSRkxPVykKICAgICAgICAgaWYgKCFsaHMgfHwgIXJocykgewogICAgICAgICAgICAgcmVz
dWx0ID0gMDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDM0LDcgKzQ0OSw2IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4g
c3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJlc3VsdCA9IGxocyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9
CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZGl2aWRlKExIUyBsaHMsIFJIUyByaHMsIFJlc3Vs
dFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCBkZTBiNDVi
ZDBhODhlYWJhNDY2YjZlNmMwYWQ2NmRjMDJmNTI1NzQxLi43YmIyN2U5OTc2ZmIxNGUwNmZhNGVl
NDg1NTM2MTdmY2EwNmQ4ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM4OCw2ICszODgsMTEgQEAgaW5s
aW5lIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZ
ZWFyKQogICAgIHJldHVybiBkIC0gc3RlcDsKIH0KIAoraW5saW5lIGRvdWJsZSB0aW1lVG9NUyhk
b3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1zKQoreworICAgIHJl
dHVybiAoKChob3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBXVEY6OnNlY29uZHNQ
ZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKK30KKwogLy8gUmV0dXJu
cyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCkuCiBXVEZfRVhQT1JU
X1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldChkb3VibGUg
dXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKQEAgLTQxMCw2ICs0MTUs
NyBAQCB1c2luZyBXVEY6Om1zVG9Ib3VyczsKIHVzaW5nIFdURjo6c2Vjb25kc1BlckRheTsKIHVz
aW5nIFdURjo6c2Vjb25kc1Blck1pbnV0ZTsKIHVzaW5nIFdURjo6cGFyc2VEYXRlRnJvbU51bGxU
ZXJtaW5hdGVkQ2hhcmFjdGVyczsKK3VzaW5nIFdURjo6dGltZVRvTVM7CiB1c2luZyBXVEY6Om1h
a2VSRkMyODIyRGF0ZVN0cmluZzsKIHVzaW5nIFdURjo6TG9jYWxUaW1lT2Zmc2V0OwogdXNpbmcg
V1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9JbnQxMjguaCBiL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCmluZGV4IDNiZGIwYTQ1ZWY1YzQ5
YWZlZTJiOWRkZmQzMGE4YWMyNTIwZDYzZmEuLjU2MGQ1M2Q5OWJiZjdlNzFiZTBkOTFhMzJhOWQz
YTM1OTQ5N2Y0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ludDEyOC5oCkBAIC0xMCw3ICsxMCw5IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0xlYWRpbmdaZXJvQml0Q291
bnQuaD4KIApAQCAtMzYsNiArMzgsODUgQEAgcHVibGljOgogICAgICAgICA6IGxvd18ge3N0YXRp
Y19jYXN0PHN0ZDo6dWludDY0X3Q+KG4pfQogICAgICAgICAsIGhpZ2hfIHstc3RhdGljX2Nhc3Q8
c3RkOjp1aW50NjRfdD4obiA8IDApfQogICAgIHsgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBJ
bnQxMjhJbXBsKGRvdWJsZSBuKQorICAgIHsKKyAgICAgICAgLy8gQmFzZWQgb24gX19maXhkZnRp
KCkgYW5kIF9fZml4dW5zZGZ0aSgpIGZyb20gY29tcGlsZXJfcnQ6CisgICAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0
MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeGludF9p
bXBsLmluYworICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3Qv
YmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0
L2xpYi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwuaW5jCisKKyAgICAgICAgY29uc3RleHByIHVu
c2lnbmVkIHR5cGVXaWR0aCA9IDEyODsKKyAgICAgICAgY29uc3RleHByIGludCBzaWduaWZpY2Fu
ZEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyAtIDE7CisgICAgICAg
IGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnVp
bnQ2NF90Pjo6ZGlnaXRzIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHM7Cisg
ICAgICAgIGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaWFzID0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXhfZXhwb25lbnQgLSAxOworICAgICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRf
dCBpbXBsaWNpdEJpdCA9IHN0ZDo6dWludDY0X3QgeyAxIH0gPDwgc2lnbmlmaWNhbmRCaXRzOwor
ICAgICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRfdCBzaWduaWZpY2FuZE1hc2sgPSBpbXBsaWNp
dEJpdCAtIHN0ZDo6dWludDY0X3QgeyAxIH07CisgICAgICAgIGNvbnN0ZXhwciBzdGQ6OnVpbnQ2
NF90IHNpZ25NYXNrID0gc3RkOjp1aW50NjRfdCB7IDEgfSA8PCAoc2lnbmlmaWNhbmRCaXRzICsg
ZXhwb25lbnRCaXRzKTsKKyAgICAgICAgY29uc3RleHByIHN0ZDo6dWludDY0X3QgYWJzTWFzayA9
IHNpZ25NYXNrIC0gc3RkOjp1aW50NjRfdCB7IDEgfTsKKworICAgICAgICBpZiAoIW4pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3Qgc3RkOjp1aW50NjRfdCBiaXRzID0gZG91
YmxlQXNCaXRzKG4pOworICAgICAgICBjb25zdCBzdGQ6OnVpbnQ2NF90IG5BYnMgPSBiaXRzICYg
YWJzTWFzazsKKworICAgICAgICAvLyBCcmVhayBuIGludG8gc2lnbiwgZXhwb25lbnQsIHNpZ25p
ZmljYW5kIHBhcnRzLgorICAgICAgICBjb25zdCBpbnQgc2lnbiA9IGJpdHMgJiBzaWduTWFzayA/
IC0xIDogMTsKKyAgICAgICAgY29uc3QgaW50IGV4cG9uZW50ID0gKG5BYnMgPj4gc2lnbmlmaWNh
bmRCaXRzKSAtIGV4cG9uZW50QmlhczsKKyAgICAgICAgY29uc3Qgc3RkOjp1aW50NjRfdCBzaWdu
aWZpY2FuZCA9IChuQWJzICYgc2lnbmlmaWNhbmRNYXNrKSB8IGltcGxpY2l0Qml0OworCisgICAg
ICAgIC8vIElmIGV4cG9uZW50IGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHplcm8uCisgICAg
ICAgIGlmIChleHBvbmVudCA8IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8g
SWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlIGFuZCB0aGlzIHR5cGUgaXMgdW5zaWduZWQsIHRoZSBy
ZXN1bHQgaXMgMC4KKyAgICAgICAgaWYgY29uc3RleHByICghSVNfU0lHTkVEKSB7CisgICAgICAg
ICAgICBpZiAoc2lnbiAhPSAxKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNob3J0Y3V0OiB1c2UgdGhlIG5hdGl2ZSBkb3VibGUtPmludDY0IGNvbnZl
cnNpb24gaWYgcG9zc2libGUuCisgICAgICAgIGlmIChleHBvbmVudCA8IDY0KSB7CisgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKElTX1NJR05FRCkgeworICAgICAgICAgICAgICAgIGxvd18gPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4obikpOworICAgICAgICAg
ICAgICAgIGhpZ2hfID0gLXN0YXRpY19jYXN0PHVpbnQ2NF90PihuIDwgMCk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBsb3dfID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIHZh
bHVlIGlzIHRvbyBsYXJnZSBmb3IgdGhlIGludGVnZXIgdHlwZSwgc2F0dXJhdGUuCisgICAgICAg
IC8vIChOb3RlLCB0aGlzIGJlaGF2aW91ciBpcyBkaWZmZXJlbnQgZnJvbSBuYXRpdmUgX19pbnQx
MjguKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4cG9uZW50KSA+PSB0eXBl
V2lkdGgpIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoSVNfU0lHTkVEKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNpZ24gPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBJbnQxMjhJbXBs
IG1heCA9ICh+SW50MTI4SW1wbCB7IDAgfSkgLyAyOworICAgICAgICAgICAgICAgICAgICBsb3df
ID0gbWF4Lmxvd187CisgICAgICAgICAgICAgICAgICAgIGhpZ2hfID0gbWF4LmhpZ2hfOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEludDEyOEltcGwgbWlu
ID0gLSgofkludDEyOEltcGwgeyAwIH0pIC8gMikgLSAxOworICAgICAgICAgICAgICAgICAgICBs
b3dfID0gbWluLmxvd187CisgICAgICAgICAgICAgICAgICAgIGhpZ2hfID0gbWluLmhpZ2hfOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGxv
d18gPSBoaWdoXyA9IDB4ZmZmZidmZmZmJ2ZmZmYnZmZmZjsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIElmIDAgPD0gZXhwb25lbnQgPCBzaWduaWZpY2FuZEJp
dHMsIHJpZ2h0IHNoaWZ0IHRvIGdldCB0aGUgcmVzdWx0LgorICAgICAgICAvLyBPdGhlcndpc2Us
IHNoaWZ0IGxlZnQuCisgICAgICAgIEludDEyOEltcGwgcmVzdWx0IHsgc2lnbmlmaWNhbmQgfTsK
KyAgICAgICAgaWYgKGV4cG9uZW50IDwgc2lnbmlmaWNhbmRCaXRzKQorICAgICAgICAgICAgcmVz
dWx0ID4+PSBzaWduaWZpY2FuZEJpdHMgLSBleHBvbmVudDsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVzdWx0IDw8PSBleHBvbmVudCAtIHNpZ25pZmljYW5kQml0czsKKyAgICAgICAgcmVz
dWx0ICo9IHNpZ247CisKKyAgICAgICAgbG93XyA9IHJlc3VsdC5sb3dfOworICAgICAgICBoaWdo
XyA9IHJlc3VsdC5oaWdoXzsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgSW50MTI4SW1wbChjb25z
dCBJbnQxMjhJbXBsPCFJU19TSUdORUQ+IG4pCisgICAgICAgIDogbG93XyB7IG4ubG93KCkgfSwg
aGlnaF8geyBuLmhpZ2goKSB9IHsgfQogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKGNvbnN0IElu
dDEyOEltcGwgJikgPSBkZWZhdWx0OwogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKEludDEyOElt
cGwgJiYpID0gZGVmYXVsdDsKICAgICBjb25zdGV4cHIgSW50MTI4SW1wbCAmb3BlcmF0b3I9KGNv
bnN0IEludDEyOEltcGwgJikgPSBkZWZhdWx0OwpAQCAtNDksNiArMTMwLDI4IEBAIHB1YmxpYzoK
ICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3Igc3RkOjp1aW50NjRfdCgpIGNvbnN0IHsg
cmV0dXJuIGxvd187IH0KICAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3Igc3RkOjppbnQ2
NF90KCkgY29uc3QgeyByZXR1cm4gbG93XzsgfQogICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVy
YXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxvd18pOyB9CisgICAg
Y29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBUcml2aWFsIGNhc2UuCisgICAgICAgIGlmICghaGlnaF8gJiYgIWxvd18pCisgICAgICAg
ICAgICByZXR1cm4gMC4wOworCisgICAgICAgIC8vIEZJWE1FOiBTbG93IGltcGxlbWVudGF0aW9u
IHVzaW5nIHN0ZDo6bGRleHAoKSB3aGlsZSBzb3J0aW5nIG91dCBidWdzCisgICAgICAgIC8vIGlu
IHRoZSBpbnQxMjggaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgYmFzZWQgb24gdGhlIG9uZSBpbiBB
YnNlaWwuCisgICAgICAgIGlmIGNvbnN0ZXhwciAoSVNfU0lHTkVEKSB7CisgICAgICAgICAgICAv
LyBXZSBtdXN0IGNvbnZlcnQgdGhlIGFic29sdXRlIHZhbHVlIGFuZCB0aGVuIG5lZ2F0ZSBhcyBu
ZWVkZWQsIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGZsb2F0aW5nIHBvaW50IHR5cGVzIGFyZSB0
eXBpY2FsbHkgc2lnbi1tYWduaXR1ZGUuIE90aGVyd2lzZSwgdGhlCisgICAgICAgICAgICAvLyBk
aWZmZXJlbmNlIGJldHdlZW4gdGhlIGhpZ2ggYW5kIGxvdyA2NCBiaXRzIHdoZW4gaW50ZXJwcmV0
ZWQgYXMgdHdvJ3MKKyAgICAgICAgICAgIC8vIGNvbXBsZW1lbnQgb3ZlcndoZWxtcyB0aGUgcHJl
Y2lzaW9uIG9mIHRoZSBtYW50aXNzYS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBB
bHNvIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBuZWdhdGUgSW50MTI4TWluKCkKKyAgICAg
ICAgICAgIHJldHVybiAoaGlnaF8gJiB0b3BCaXQpICYmIChoaWdoXyAhPSB1aW50NjRfdCB7IDEg
fSA8PCA2MyAmJiBsb3dfKQorICAgICAgICAgICAgICAgID8gLXN0YXRpY19jYXN0PGRvdWJsZT4o
LSp0aGlzKQorICAgICAgICAgICAgICAgIDogc3RhdGljX2Nhc3Q8ZG91YmxlPihsb3dfKSArIHN0
ZDo6bGRleHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2NF90PihoaWdoXykp
LCA2NCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihs
b3dfKSArIHN0ZDo6bGRleHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihoaWdoXyksIDY0KTsKKyAgICB9
CiAKICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRfdCBoaWdoKCkgY29uc3QgeyByZXR1cm4gaGln
aF87IH0KICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRfdCBsb3coKSBjb25zdCB7IHJldHVybiBs
b3dfOyB9CkBAIC0yNTYsNiArMzU5LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4g
NjQgKyBsZWFkaW5nWmVyb0JpdENvdW50KGxvd18pOwogICAgICAgICByZXR1cm4gbGVhZGluZ1pl
cm9CaXRDb3VudChoaWdoXyk7CiAgICAgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIHN0
ZDo6dWludDY0X3QgZG91YmxlQXNCaXRzKGRvdWJsZSBkKQorICAgIHsKKyAgICAgICAgY29uc3Qg
dW5pb24geworICAgICAgICAgICAgZG91YmxlIGQ7CisgICAgICAgICAgICBzdGQ6OnVpbnQ2NF90
IHU7CisgICAgICAgIH0gYml0czsKKyAgICAgICAgYml0cy5kID0gZDsKKyAgICAgICAgcmV0dXJu
IGJpdHMudTsKKyAgICB9CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgZG91YmxlIGJpdHNB
c0RvdWJsZShzdGQ6OnVpbnQ2NF90IHUpCisgICAgeworICAgICAgICBjb25zdCB1bmlvbiB7Cisg
ICAgICAgICAgICBkb3VibGUgZDsKKyAgICAgICAgICAgIHN0ZDo6dWludDY0X3QgdTsKKyAgICAg
ICAgfSBiaXRzOworICAgICAgICBiaXRzLnUgPSB1OworICAgICAgICByZXR1cm4gYml0cy5kOwor
ICAgIH0KICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6dWludDY0X3QgdG9wQml0IHtzdGQ6OnVp
bnQ2NF90IHsxfSA8PCA2M307CiAgICAgc3RkOjp1aW50NjRfdCBsb3dfIHswfSwgaGlnaF8gezB9
OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjZjNlMDRlYWFkNjU1NmRlN2IzMjI2MzU4M2JmYzNhNzk3ZjBlMmE3Li4yY2RkOTdiYmMxM2Iw
MjUyMDU1ZmNkYmRkY2I2NWU0MDRhZTM2ZjEyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTAtMjEgIFBoaWxp
cCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50b0BnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
SW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50MTI4LmNwcDog
QWRkIHRlc3RzIGZvciBjb252ZXJzaW9uIHRvIGFuZAorICAgICAgICAgIGZyb20gZG91YmxlLCBh
ZGFwdGVkIGZyb20gQ2xhbmcncyBjb21waWxlcl9ydC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Ok1ha2VJbnQxMjgpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWFrZVVJbnQxMjgpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWRJbXBsKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWRJbXBsKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkSW1wbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
ZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZEltcGwpOgorCiAyMDIxLTEwLTE5ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIE92ZXJy
aWRlIGh0dHAgdXJsIHdpdGggc3NoIHVybApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSW50MTI4LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0lu
dDEyOC5jcHAKaW5kZXggNzc1YmY3MTE5NDBkZDQyMmZmNDcyMWI0Y2RiYzVlN2ZhNzYzZjQyYy4u
MzQ3YjYyYTIyNGM1NzAxNjFmZTBjOWM0ZTA1N2Y5ZWQwYTVlZmY3NSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50MTI4LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9JbnQxMjguY3BwCkBAIC00LDE3ICs0LDM2IEBACiAKIC8vIEJhc2Vk
IG9uOgogLy8gaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2Jsb2IvZDQ4MGY5
NjgvZmxhbmcvdW5pdHRlc3RzL0V2YWx1YXRlL3VpbnQxMjguY3BwCisvLyBodHRwczovL2dpdGh1
Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNS9jb21waWxlci1ydC90ZXN0L2J1
aWx0aW5zL1VuaXQvZml4ZGZ0aV90ZXN0LmMKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xs
dm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1L2NvbXBpbGVyLXJ0L3Rlc3QvYnVpbHRpbnMvVW5pdC9m
aXh1bnNkZnRpX3Rlc3QuYworLy8gaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0
L2Jsb2IvZjM2NzFkZTUvY29tcGlsZXItcnQvdGVzdC9idWlsdGlucy9Vbml0L2Zsb2F0dGlkZl90
ZXN0LmMKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcx
ZGU1L2NvbXBpbGVyLXJ0L3Rlc3QvYnVpbHRpbnMvVW5pdC9mbG9hdHVudGlkZl90ZXN0LmMKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogI2luY2x1ZGUg
PGNpbnR0eXBlcz4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDxsaW1pdHM+CiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdXNpbmcgTm9uTmF0aXZlSW50MTI4ID0gV1RGOjpJbnQx
MjhJbXBsPHRydWU+OwogdXNpbmcgTm9uTmF0aXZlVUludDEyOCA9IFdURjo6SW50MTI4SW1wbDxm
YWxzZT47CiAKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1heFNhZmVJbnRlZ2VyID0gMHgxLmZm
ZmZmZmZmZmZmZmZwKzUyOyAvLyBsYXN0IGZsb2F0aW5nIHBvaW50IHZhbHVlIHRoYXQgY29ycmVz
cG9uZHMgdG8gb25seSBvbmUgaW50ZWdlcgorc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG1heFNh
ZmVJbnRlZ2VyNjQgPSA5MDA3MTk5MjU0NzQwOTkxOworCitzdGF0aWMgY29uc3RleHByIE5vbk5h
dGl2ZUludDEyOCBNYWtlSW50MTI4KHN0ZDo6aW50NjRfdCBoaWdoLCBzdGQ6OnVpbnQ2NF90IGxv
dykKK3sKKyAgICByZXR1cm4gTm9uTmF0aXZlSW50MTI4IHsgTm9uTmF0aXZlVUludDEyOCB7IGhp
Z2ggfSA8PCA2NCB8IGxvdyB9OworfQorCitzdGF0aWMgY29uc3RleHByIE5vbk5hdGl2ZVVJbnQx
MjggTWFrZVVJbnQxMjgoc3RkOjp1aW50NjRfdCBoaWdoLCBzdGQ6OnVpbnQ2NF90IGxvdykKK3sK
KyAgICByZXR1cm4gTm9uTmF0aXZlVUludDEyOCB7IGhpZ2ggfSA8PCA2NCB8IGxvdzsKK30KKwog
c3RhdGljIHZvaWQgVGVzdFVuYXJ5KHN0ZDo6dWludDY0X3QgeCkKIHsKICAgICBOb25OYXRpdmVV
SW50MTI4IG4geyB4IH07CkBAIC02NCw2ICs4MywyNjcgQEAgVEVTVChXVEZfSW50MTI4LCBCYXNp
YykKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkSW1w
bChkb3VibGUgYSwgTm9uTmF0aXZlSW50MTI4IGV4cGVjdGVkLCBjb25zdCBjaGFyKiBhU3RyLCBj
b25zdCBjaGFyKiBleHBlY3RlZFN0cikKK3sKKyAgICBOb25OYXRpdmVJbnQxMjggeCB7IGEgfTsK
KyAgICBFWFBFQ1RfRVEoeCwgZXhwZWN0ZWQpIDw8ICJjb252ZXJ0ICIgPDwgYVN0ciA8PCAiIHRv
IHNpZ25lZCBpbnQxMjgsIGV4cGVjdGVkICIgPDwgZXhwZWN0ZWRTdHI7Cit9CisKK3N0YXRpYyB2
b2lkIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWRJbXBsKGRvdWJsZSBhLCBOb25OYXRpdmVV
SW50MTI4IGV4cGVjdGVkLCBjb25zdCBjaGFyKiBhU3RyLCBjb25zdCBjaGFyKiBleHBlY3RlZFN0
cikKK3sKKyAgICBOb25OYXRpdmVVSW50MTI4IHggeyBhIH07CisgICAgRVhQRUNUX0VRKHgsIGV4
cGVjdGVkKSA8PCAiY29udmVydCAiIDw8IGFTdHIgPDwgIiB0byB1bnNpZ25lZCBpbnQxMjgsIGV4
cGVjdGVkICIgPDwgZXhwZWN0ZWRTdHI7Cit9CisKKyNkZWZpbmUgVGVzdENvbnZlcnRGcm9tRmxv
YXRTaWduZWQoYSwgZXhwZWN0ZWQpIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkSW1wbChhLCBl
eHBlY3RlZCwgI2EsICNleHBlY3RlZCk7CisjZGVmaW5lIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5z
aWduZWQoYSwgZXhwZWN0ZWQpIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWRJbXBsKGEsIGV4
cGVjdGVkLCAjYSwgI2V4cGVjdGVkKTsKKworVEVTVChXVEZfSW50MTI4LCBDb252ZXJzaW9uRnJv
bUZsb2F0aW5nUG9pbnQpCit7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMC4wLCAw
KTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKDAuNSwgMCk7CisgICAgVGVzdENv
bnZlcnRGcm9tRmxvYXRTaWduZWQoMC45OSwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRT
aWduZWQoMS4wLCAxKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgxLjUsIDEpOwor
ICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKDEuOTksIDEpOworICAgIFRlc3RDb252ZXJ0
RnJvbUZsb2F0U2lnbmVkKDIuMCwgMik7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQo
Mi4wMSwgMik7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTAuNSwgMCk7CisgICAg
VGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTAuOTksIDApOworICAgIFRlc3RDb252ZXJ0RnJv
bUZsb2F0U2lnbmVkKC0xLjAsIC0xKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgt
MS41LCAtMSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTEuOTksIC0xKTsKKyAg
ICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtMi4wLCAtMik7CisgICAgVGVzdENvbnZlcnRG
cm9tRmxvYXRTaWduZWQoLTIuMDEsIC0yKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2ln
bmVkKDB4MS5GRkZGRkVwKzYyLCAweDdGRkZGRjgwMDAwMDAwMDBMTCk7CisgICAgVGVzdENvbnZl
cnRGcm9tRmxvYXRTaWduZWQoMHgxLkZGRkZGQ3ArNjIsIDB4N0ZGRkZGMDAwMDAwMDAwMExMKTsK
KworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0weDEuRkZGRkZFcCs2MiwgTWFrZUlu
dDEyOCgweEZGRkZGRkZGRkZGRkZGRkZMTCwgMHg4MDAwMDA4MDAwMDAwMDAwTEwpKTsKKyAgICBU
ZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtMHgxLkZGRkZGQ3ArNjIsIE1ha2VJbnQxMjgoMHhG
RkZGRkZGRkZGRkZGRkZGTEwsIDB4ODAwMDAxMDAwMDAwMDAwMExMKSk7CisKKyAgICBUZXN0Q29u
dmVydEZyb21GbG9hdFNpZ25lZCgweDEuRkZGRkZGRkZGRkZGRnArNjIsIDB4N0ZGRkZGRkZGRkZG
RkMwMExMKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgweDEuRkZGRkZGRkZGRkZG
RXArNjIsIDB4N0ZGRkZGRkZGRkZGRjgwMExMKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0
U2lnbmVkKC0weDEuRkZGRkZGRkZGRkZGRnArNjIsIE1ha2VJbnQxMjgoMHhGRkZGRkZGRkZGRkZG
RkZGTEwsIDB4ODAwMDAwMDAwMDAwMDQwMExMKSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRT
aWduZWQoLTB4MS5GRkZGRkZGRkZGRkZFcCs2MiwgTWFrZUludDEyOCgweEZGRkZGRkZGRkZGRkZG
RkZMTCwgMHg4MDAwMDAwMDAwMDAwODAwTEwpKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0
U2lnbmVkKDB4MS5GRkZGRkZGRkZGRkZGcCsxMjYsIE1ha2VJbnQxMjgoMHg3RkZGRkZGRkZGRkZG
QzAwTEwsIDApKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgweDEuRkZGRkZGRkZG
RkZGRXArMTI2LCBNYWtlSW50MTI4KDB4N0ZGRkZGRkZGRkZGRjgwMExMLCAwKSk7CisKKyAgICBU
ZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtMHgxLkZGRkZGRkZGRkZGRkZwKzEyNiwgTWFrZUlu
dDEyOCgweDgwMDAwMDAwMDAwMDA0MDBMTCwgMCkpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0
U2lnbmVkKC0weDEuRkZGRkZGRkZGRkZGRXArMTI2LCBNYWtlSW50MTI4KDB4ODAwMDAwMDAwMDAw
MDgwMExMLCAwKSk7CisKKyAgICAvLyBtYXgvbWluIHNhZmUgaW50ZWdlciAoYW5kIHRoZSBuZXh0
IGNsb3Nlc3QgaW50ZWdlciB0byAwIGZyb20gdGhlcmUpCisgICAgVGVzdENvbnZlcnRGcm9tRmxv
YXRTaWduZWQobWF4U2FmZUludGVnZXIsIG1heFNhZmVJbnRlZ2VyNjQpOworICAgIFRlc3RDb252
ZXJ0RnJvbUZsb2F0U2lnbmVkKC1tYXhTYWZlSW50ZWdlciwgLW1heFNhZmVJbnRlZ2VyNjQpOwor
ICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKG1heFNhZmVJbnRlZ2VyIC0gMSwgbWF4U2Fm
ZUludGVnZXI2NCAtIDEpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0obWF4U2Fm
ZUludGVnZXIgLSAxKSwgLShtYXhTYWZlSW50ZWdlcjY0IC0gMSkpOworCisgICAgVGVzdENvbnZl
cnRGcm9tRmxvYXRVbnNpZ25lZCgwLjAsIDApOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRV
bnNpZ25lZCgwLjUsIDApOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMC45OSwg
MCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgxLjAsIDEpOworICAgIFRlc3RD
b252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMS41LCAxKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9h
dFVuc2lnbmVkKDEuOTksIDEpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMi4w
LCAyKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDIuMDEsIDIpOworICAgIFRl
c3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoLTAuNSwgMCk7IC8vIHJldHVybnMgMCBmb3IgbmVn
YXRpdmUgaW5wdXQKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0wLjk5LCAwKTsK
KyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0xLjAsIDApOworICAgIFRlc3RDb252
ZXJ0RnJvbUZsb2F0VW5zaWduZWQoLTEuNSwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRV
bnNpZ25lZCgtMS45OSwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgtMi4w
LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0yLjAxLCAwKTsKKworICAg
IFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLkZGRkZGRXArNjIsIDB4N0ZGRkZGODAw
MDAwMDAwMExMKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS5GRkZGRkNw
KzYyLCAweDdGRkZGRjAwMDAwMDAwMDBMTCk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVu
c2lnbmVkKC0weDEuRkZGRkZFcCs2MiwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNp
Z25lZCgtMHgxLkZGRkZGQ3ArNjIsIDApOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNp
Z25lZCgweDEuRkZGRkZGRkZGRkZGRnArNjMsIDB4RkZGRkZGRkZGRkZGRjgwMFVMTCk7CisgICAg
VGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgweDEuMDAwMDAwMDAwMDAwMHArNjMsIDB4ODAw
MDAwMDAwMDAwMDAwMFVMTCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgweDEu
RkZGRkZGRkZGRkZGRnArNjIsIDB4N0ZGRkZGRkZGRkZGRkMwMFVMTCk7CisgICAgVGVzdENvbnZl
cnRGcm9tRmxvYXRVbnNpZ25lZCgweDEuRkZGRkZGRkZGRkZGRXArNjIsIDB4N0ZGRkZGRkZGRkZG
RjgwMFVMTCk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS5GRkZGRkZG
RkZGRkZGcCsxMjcsIE1ha2VVSW50MTI4KDB4RkZGRkZGRkZGRkZGRjgwMFVMTCwgMCkpOworICAg
IFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLjAwMDAwMDAwMDAwMDBwKzEyNywgTWFr
ZVVJbnQxMjgoMHg4MDAwMDAwMDAwMDAwMDAwVUxMLCAwKSk7CisgICAgVGVzdENvbnZlcnRGcm9t
RmxvYXRVbnNpZ25lZCgweDEuRkZGRkZGRkZGRkZGRnArMTI2LCBNYWtlVUludDEyOCgweDdGRkZG
RkZGRkZGRkZDMDBVTEwsIDApKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4
MS5GRkZGRkZGRkZGRkZFcCsxMjYsIE1ha2VVSW50MTI4KDB4N0ZGRkZGRkZGRkZGRjgwMFVMTCwg
MCkpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLjAwMDAwMDAwMDAwMDBw
KzEyOCwgTWFrZVVJbnQxMjgoMHhGRkZGRkZGRkZGRkZGRkZGVUxMLCAweEZGRkZGRkZGRkZGRkZG
RkZVTEwpKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoLTB4MS5GRkZGRkZG
RkZGRkZGcCs2MiwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgtMHgxLkZG
RkZGRkZGRkZGRkVwKzYyLCAwKTsKKworICAgIC8vIG1heC9taW4gc2FmZSBpbnRlZ2VyIChhbmQg
dGhlIG5leHQgY2xvc2VzdCBpbnRlZ2VyIHRvIDAgZnJvbSB0aGVyZSkKKyAgICBUZXN0Q29udmVy
dEZyb21GbG9hdFVuc2lnbmVkKG1heFNhZmVJbnRlZ2VyLCBtYXhTYWZlSW50ZWdlcjY0KTsKKyAg
ICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKG1heFNhZmVJbnRlZ2VyIC0gMS4wLCBtYXhT
YWZlSW50ZWdlcjY0IC0gMSk7Cit9CisKK3N0YXRpYyB2b2lkIFRlc3RDb252ZXJ0VG9GbG9hdFNp
Z25lZEltcGwoTm9uTmF0aXZlSW50MTI4IGEsIGRvdWJsZSBleHBlY3RlZCwgY29uc3QgY2hhciog
YVN0ciwgY29uc3QgY2hhciogZXhwZWN0ZWRTdHIpCit7CisgICAgZG91YmxlIHggeyBhIH07Cisg
ICAgRVhQRUNUX0VRKHgsIGV4cGVjdGVkKSA8PCAiY29udmVydCBzaWduZWQgIiA8PCBhU3RyIDw8
ICIgdG8gZmxvYXQsIGV4cGVjdGVkICIgPDwgZXhwZWN0ZWRTdHI7Cit9CisKK3N0YXRpYyB2b2lk
IFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkSW1wbChOb25OYXRpdmVVSW50MTI4IGEsIGRvdWJs
ZSBleHBlY3RlZCwgY29uc3QgY2hhciogYVN0ciwgY29uc3QgY2hhciogZXhwZWN0ZWRTdHIpCit7
CisgICAgZG91YmxlIHggeyBhIH07CisgICAgRVhQRUNUX0VRKHgsIGV4cGVjdGVkKSA8PCAiY29u
dmVydCB1bnNpZ25lZCAiIDw8IGFTdHIgPDwgIiB0byBmbG9hdCwgZXhwZWN0ZWQgIiA8PCBleHBl
Y3RlZFN0cjsKK30KKworI2RlZmluZSBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoYSwgZXhwZWN0
ZWQpIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZEltcGwoYSwgZXhwZWN0ZWQsICNhLCAjZXhwZWN0
ZWQpCisjZGVmaW5lIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKGEsIGV4cGVjdGVkKSBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZEltcGwoYSwgZXhwZWN0ZWQsICNhLCAjZXhwZWN0ZWQpCisK
K1RFU1QoV1RGX0ludDEyOCwgQ29udmVyc2lvblRvRmxvYXRpbmdQb2ludCkKK3sKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRTaWduZWQoMCwgMC4wKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNp
Z25lZCgxLCAxLjApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgyLCAyLjApOworICAg
IFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgyMCwgMjAuMCk7CisgICAgVGVzdENvbnZlcnRUb0Zs
b2F0U2lnbmVkKC0xLCAtMS4wKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoLTIsIC0y
LjApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgtMjAsIC0yMC4wKTsKKworICAgIFRl
c3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDdGRkZGRjgwMDAwMDAwMDBMTCwgMHgxLkZGRkZGRXAr
NjIpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDdGRkZGRkZGRkZGRkY4MDBMTCwg
MHgxLkZGRkZGRkZGRkZGRkVwKzYyKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHg3
RkZGRkYwMDAwMDAwMDAwTEwsIDB4MS5GRkZGRkNwKzYyKTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoMHg3RkZGRkZGRkZGRkZGMDAwTEwsIDB4MS5GRkZGRkZGRkZGRkZDcCs2Mik7CisK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDgwMDAwMDgwMDAwMDAw
MDBMTCwgMCksIC0weDEuRkZGRkZFcCsxMjYpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25l
ZChNYWtlSW50MTI4KDB4ODAwMDAwMDAwMDAwMDgwMExMLCAwKSwgLTB4MS5GRkZGRkZGRkZGRkZF
cCsxMjYpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4ODAwMDAx
MDAwMDAwMDAwMExMLCAwKSwgLTB4MS5GRkZGRkNwKzEyNik7CisgICAgVGVzdENvbnZlcnRUb0Zs
b2F0U2lnbmVkKE1ha2VJbnQxMjgoMHg4MDAwMDAwMDAwMDAxMDAwTEwsIDApLCAtMHgxLkZGRkZG
RkZGRkZGRkNwKzEyNik7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEy
OCgweDgwMDAwMDAwMDAwMDAwMDBMTCwgMCksIC0weDEuMDAwMDAwcCsxMjcpOworICAgIFRlc3RD
b252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4ODAwMDAwMDAwMDAwMDAwMUxMLCAwKSwg
LTB4MS4wMDAwMDBwKzEyNyk7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3
RkI3MkU4MDAwMDAwTEwsIDB4MS5GRURDQkFwKzUwKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFNpZ25lZCgweDAwMDdGQjcyRUEwMDAwMDBMTCwgMHgxLkZFRENCQThwKzUwKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkVCMDAwMDAwTEwsIDB4MS5GRURDQkFDcCs1
MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZCNzJFQkZGRkZGRkxMLCAw
eDEuRkVEQ0JBRkZGRkZGQ3ArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAw
MDdGQjcyRUMwMDAwMDBMTCwgMHgxLkZFRENCQnArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFNpZ25lZCgweDAwMDdGQjcyRTgwMDAwMDFMTCwgMHgxLkZFRENCQTAwMDAwMDRwKzUwKTsKKwor
ICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAwMDdGQjcyRTYwMDAwMDBMTCwgMHgxLkZF
RENCOThwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkU3MDAw
MDAwTEwsIDB4MS5GRURDQjlDcCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4
MDAwN0ZCNzJFN0ZGRkZGRkxMLCAweDEuRkVEQ0I5RkZGRkZGQ3ArNTApOworICAgIFRlc3RDb252
ZXJ0VG9GbG9hdFNpZ25lZCgweDAwMDdGQjcyRTQwMDAwMDFMTCwgMHgxLkZFRENCOTAwMDAwMDRw
KzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkU0MDAwMDAwTEws
IDB4MS5GRURDQjlwKzUwKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3
OUZEMEUwOTJEQzBMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREExTEwsIDB4MS4xQTNDRkU4NzA0OTZEcCs1Nyk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRCMExMLCAweDEu
MUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3
OUZEMEUwOTJEQjhMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREI2TEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRCRkxMLCAweDEu
MUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3
OUZEMEUwOTJEQzFMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREM3TEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDOExMLCAweDEu
MUEzQ0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3
OUZEMEUwOTJEQ0ZMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREQwTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkREMUxMLCAweDEu
MUEzQ0ZFODcwNDk2RnArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3
OUZEMEUwOTJERDhMTCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyRERGTEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRFMExMLCAweDEu
MUEzQ0ZFODcwNDk2RnArNTcpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJ
bnQxMjgoMHgwMjM0NzlGRDBFMDkyREMwTEwsIDApLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJE
QTFMTCwgMSksIDB4MS4xQTNDRkU4NzA0OTZEcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCMExMLCAyKSwgMHgxLjFBM0NGRTg3
MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgw
MjM0NzlGRDBFMDkyREI4TEwsIDMpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQjZMTCwgNCks
IDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChN
YWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCRkxMLCA1KSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEy
MSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBF
MDkyREMxTEwsIDYpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQzdMTCwgNyksIDB4MS4xQTND
RkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4
KDB4MDIzNDc5RkQwRTA5MkRDOExMLCA4KSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAg
VGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyRENGTEws
IDkpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWdu
ZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJERDBMTCwgMCksIDB4MS4xQTNDRkU4NzA0OTZF
cCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5
RkQwRTA5MkREMUxMLCAxMSksIDB4MS4xQTNDRkU4NzA0OTZGcCsxMjEpOworICAgIFRlc3RDb252
ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5MkREOExMLCAxMiksIDB4
MS4xQTNDRkU4NzA0OTZGcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtl
SW50MTI4KDB4MDIzNDc5RkQwRTA5MkRERkxMLCAxMyksIDB4MS4xQTNDRkU4NzA0OTZGcCsxMjEp
OworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5
MkRFMExMLCAxNCksIDB4MS4xQTNDRkU4NzA0OTZGcCsxMjEpOworCisgICAgLy8gbWF4L21pbiBz
YWZlIGludGVnZXIgKGFuZCB0aGUgbmV4dCBjbG9zZXN0IGludGVnZXIgdG8gMCBmcm9tIHRoZXJl
KQorICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChtYXhTYWZlSW50ZWdlcjY0LCBtYXhTYWZl
SW50ZWdlcik7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKC1tYXhTYWZlSW50ZWdlcjY0
LCAtbWF4U2FmZUludGVnZXIpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChtYXhTYWZl
SW50ZWdlcjY0IC0gMSwgbWF4U2FmZUludGVnZXIgLSAxLjApOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFNpZ25lZCgtKG1heFNhZmVJbnRlZ2VyNjQgLSAxKSwgLShtYXhTYWZlSW50ZWdlciAtIDEu
MCkpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMCwgMC4wKTsKKworICAgIFRl
c3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDEsIDEuMCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0
VW5zaWduZWQoMiwgMi4wKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgyMCwgMjAu
MCk7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDdGRkZGRjgwMDAwMDAwMDBM
TCwgMHgxLkZGRkZGRXArNjIpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4N0ZG
RkZGRkZGRkZGRjgwMExMLCAweDEuRkZGRkZGRkZGRkZGRXArNjIpOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKDB4N0ZGRkZGMDAwMDAwMDAwMExMLCAweDEuRkZGRkZDcCs2Mik7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHg3RkZGRkZGRkZGRkZGMDAwTEwsIDB4MS5G
RkZGRkZGRkZGRkZDcCs2Mik7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtl
VUludDEyOCgweDgwMDAwMDgwMDAwMDAwMDBMTCwgMCksIDB4MS4wMDAwMDFwKzEyNyk7CisgICAg
VGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHg4MDAwMDAwMDAwMDAwODAw
TEwsIDApLCAweDEuMDAwMDAwMDAwMDAwMXArMTI3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRV
bnNpZ25lZChNYWtlVUludDEyOCgweDgwMDAwMTAwMDAwMDAwMDBMTCwgMCksIDB4MS4wMDAwMDJw
KzEyNyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHg4MDAw
MDAwMDAwMDAxMDAwTEwsIDApLCAweDEuMDAwMDAwMDAwMDAwMnArMTI3KTsKKworICAgIFRlc3RD
b252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4ODAwMDAwMDAwMDAwMDAwMExMLCAw
KSwgMHgxLjAwMDAwMHArMTI3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtl
VUludDEyOCgweDgwMDAwMDAwMDAwMDAwMDFMTCwgMCksIDB4MS4wMDAwMDAwMDAwMDAwMDAycCsx
MjcpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3RkI3MkU4MDAwMDAw
TEwsIDB4MS5GRURDQkFwKzUwKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4
MDAwN0ZCNzJFQTAwMDAwMExMLCAweDEuRkVEQ0JBOHArNTApOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJFQjAwMDAwMExMLCAweDEuRkVEQ0JBQ3ArNTApOworICAg
IFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJFQkZGRkZGRkxMLCAweDEuRkVE
Q0JBRkZGRkZGQ3ArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDAwN0ZC
NzJFQzAwMDAwMExMLCAweDEuRkVEQ0JCcCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5z
aWduZWQoMHgwMDA3RkI3MkU4MDAwMDAxTEwsIDB4MS5GRURDQkEwMDAwMDA0cCs1MCk7CisKKyAg
ICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRTYwMDAwMDBMTCwgMHgxLkZF
RENCOThwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRTcw
MDAwMDBMTCwgMHgxLkZFRENCOUNwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25l
ZCgweDAwMDdGQjcyRTdGRkZGRkZMTCwgMHgxLkZFRENCOUZGRkZGRkNwKzUwKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRTQwMDAwMDFMTCwgMHgxLkZFRENCOTAw
MDAwMDRwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRTQw
MDAwMDBMTCwgMHgxLkZFRENCOXArNTApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWdu
ZWQoMHgwMjM0NzlGRDBFMDkyREMwTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVz
dENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREExTEwsIDB4MS4xQTNDRkU4
NzA0OTZEcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBF
MDkyREIwTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0
VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREI4TEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREI2TEwsIDB4MS4x
QTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0
NzlGRDBFMDkyREJGTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENvbnZlcnRU
b0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREMxTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1
Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREM3TEws
IDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQo
MHgwMjM0NzlGRDBFMDkyREM4TEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENv
bnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyRENGTEwsIDB4MS4xQTNDRkU4NzA0
OTZFcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDky
REQwTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5z
aWduZWQoMHgwMjM0NzlGRDBFMDkyREQxTEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7CisgICAg
VGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREQ4TEwsIDB4MS4xQTND
RkU4NzA0OTZGcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMjM0NzlG
RDBFMDkyRERGTEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7CisgICAgVGVzdENvbnZlcnRUb0Zs
b2F0VW5zaWduZWQoMHgwMjM0NzlGRDBFMDkyREUwTEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7
CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZE
MEUwOTJEQzBMTCwgMCksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRBMUxMLCAxKSwgMHgx
LjFBM0NGRTg3MDQ5NkRwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFr
ZVVJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREIwTEwsIDIpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIx
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZE
MEUwOTJEQjhMTCwgMyksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCNkxMLCA0KSwgMHgx
LjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFr
ZVVJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREJGTEwsIDUpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIx
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZE
MEUwOTJEQzFMTCwgNiksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRDN0xMLCA3KSwgMHgx
LjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFr
ZVVJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREM4TEwsIDgpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIx
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZE
MEUwOTJEQ0ZMTCwgOSksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkREMExMLCAwKSwgMHgx
LjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFr
ZVVJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREQxTEwsIDExKSwgMHgxLjFBM0NGRTg3MDQ5NkZwKzEy
MSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHgwMjM0NzlG
RDBFMDkyREQ4TEwsIDEyKSwgMHgxLjFBM0NGRTg3MDQ5NkZwKzEyMSk7CisgICAgVGVzdENvbnZl
cnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJbnQxMjgoMHgwMjM0NzlGRDBFMDkyRERGTEwsIDEzKSwg
MHgxLjFBM0NGRTg3MDQ5NkZwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQo
TWFrZVVJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREUwTEwsIDE0KSwgMHgxLjFBM0NGRTg3MDQ5NkZw
KzEyMSk7CisKKyAgICAvLyBtYXgvbWluIHNhZmUgaW50ZWdlciAoYW5kIHRoZSBuZXh0IGNsb3Nl
c3QgaW50ZWdlciB0byAwIGZyb20gdGhlcmUpCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWdu
ZWQobWF4U2FmZUludGVnZXI2NCwgbWF4U2FmZUludGVnZXIpOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKG1heFNhZmVJbnRlZ2VyNjQgLSAxLCBtYXhTYWZlSW50ZWdlciAtIDEuMCk7
Cit9CisKICNpZiBIQVZFKElOVDEyOF9UKQogc3RhdGljIF9fdWludDEyOF90IFRvTmF0aXZlKE5v
bk5hdGl2ZVVJbnQxMjggbikKIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTgxMGJhMWY3NDE4ZTRlMTFjNjNlNGIwZjY5MzJmNGQ3YjJl
NjNjNS4uNWVlODczNzNhNjNkYjQwYzg2NWIwYzdkMmYzN2ZhYWY3NTI5ZjE5NSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAyMS0xMC0yMSAgUGhpbGlwIENoaW1lbnRvICA8cGNoaW1lbnRvQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLkluc3RhbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTgyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLWlu
c3RhbnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkTm90
QmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoaW5zdGFudHMuZm9yRWFjaCk6
CisgICAgICAgIChzaG91bGRUaHJvdy5uZXcuVGVtcG9yYWwuSW5zdGFudCk6CisgICAgICAgIChj
b25zdC5tYXhWYWx1ZS5uZXcuVGVtcG9yYWwuSW5zdGFudCk6CisgICAgICAgIChzaG91bGRCZS5l
cG9jaC5zdWJ0cmFjdCk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDogTm8gbmVlZCB0
byBpZ25vcmUgYWxsIFRlbXBvcmFsLkluc3RhbnQgdGVzdHMKKyAgICAgICAgICBhbnltb3JlLCBv
bmx5IHRoZSBvbmVzIGZvciB0aGUgdW5pbXBsZW1lbnRlZCBtZXRob2RzLgorCiAyMDIxLTEwLTE4
ICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVGVzdCBjb3Zl
cmFnZSBmb3IgSlNDIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3Jh
bC1pbnN0YW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YjdhNWI2Y2EwNTkzNGE2NDU3ZDZmNTZkOWQ1YzVi
NTQxZTJhODIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0
YW50LmpzCkBAIC0wLDAgKzEsNDA3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlVGVtcG9y
YWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGROb3RC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgYSB2YWx1ZSB0byBiZSBkaWZmZXJlbnQgZnJv
bSAke2V4cGVjdGVkfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5
cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlm
ICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobWVz
c2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAgICAgICBpZiAoIW1lc3NhZ2Uu
dGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4
cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21lc3NhZ2V9IWApOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIGVwb2NoCit7CisgICAgY29uc3QgaW5zdGFudHMg
PSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaE1pbGxpc2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hNaWNyb3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5h
bm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTcwLTAxLTAx
VDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4g
eworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgMCk7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIDApOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hOYW5vc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5n
KCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
SlNPTigpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gcG9zaXRp
dmUgZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRl
bXBvcmFsLkluc3RhbnQoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMV8wMDBfMDAwXzAwMCksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoMV8wMDBfMDAw
XzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3Nl
Y29uZHMoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzIwMDEtMDktMDlUMDE6NDY6NDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCAxXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxp
c2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoTWljcm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzIwMDEtMDktMDlUMDE6NDY6
NDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMDAxLTA5LTA5VDAx
OjQ2OjQwWicpOworICAgIH0pOworfQorCisvLyBuZWdhdGl2ZSBlcG9jaCB2YWx1ZQoreworICAg
IGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtMV8wMDBf
MDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9j
aFNlY29uZHMoLTFfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaE1pbGxpc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoLTFfMDAwXzAwMF8w
MDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTM4LTA0
LTI0VDIyOjEzOjIwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkg
PT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgLTFfMDAwXzAwMF8w
MDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtMV8wMDBf
MDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRz
LCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTkzOC0wNC0yNFQyMjoxMzoyMFonKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyk7Cisg
ICAgfSk7Cit9CisKKy8vIG1heGludDY0IGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFu
dHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDkyMjMzNzIwMzY4NTQ3NzU4MDdu
KSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyg5MjIzMzcy
MDM2ODU0Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjI2Mi0wNC0x
MVQyMzo0NzoxNi44NTQ3NzU4MDdaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNoKChp
bnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCA5MjIz
MzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgOTIy
MzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMs
IDkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9z
ZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
dG9TdHJpbmcoKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpOworICAgICAgICBz
aG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDda
Jyk7CisgICAgfSk7Cit9CisKKy8vIG1pbmludDY0IGVwb2NoIHZhbHVlCit7CisgICAgY29uc3Qg
aW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KC05MjIzMzcyMDM2ODU0
Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
LTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
Njc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZv
ckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29u
ZHMsIC05MjIzMzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vj
b25kcywgLTkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlj
cm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTmFub3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1ODA4bik7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicp
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTY3Ny0wOS0yMVQwMDoxMjo0
My4xNDUyMjQxOTJaJyk7CisgICAgfSk7Cit9CisKKy8vIG1heCBJbnN0YW50IHJhbmdlCit7Cisg
ICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAw
XzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaFNlY29uZHMoODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hNaWxsaXNlY29uZHMoODY0MDBfMDAwMF8wMDAwXzAwMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAw
biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoODY0MDBf
MDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
KzI3NTc2MC0wOS0xM1QwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2go
KGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDg2
NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29u
ZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2No
TWljcm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4p
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcrMjc1NzYwLTA5LTEzVDAw
OjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnKzI3NTc2MC0w
OS0xM1QwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gbWluIEluc3RhbnQgcmFuZ2UKK3sK
KyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoLTg2
NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaFNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
LTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCAtODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
bGxpc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWljcm9zZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAw
MF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJy0yNzE4
MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCks
ICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyB0b28gbGFyZ2UK
K3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvXGI4NjQwMDAwMDAwMDAwMDAwMDAwMDAxXGIvKTsK
Ky8vIHRvbyBzbWFsbAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoLTg2
NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvLTg2NDAwMDAwMDAwMDAw
MDAwMDAwMDFcYi8pOworLy8gbGFyZ2VyIHRoYW4gbWF4aW50MTI4CitzaG91bGRUaHJvdygoKSA9
PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgxbiA8PCAxMjluKSwgUmFuZ2VFcnJvciwgL1xiNjgwNTY0
NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYzNTM2NDIyOTEyXGIvKTsKKy8vIHNtYWxsZXIgdGhhbiBt
aW5pbnQxMjgKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KC0xbiA8PCAx
MjluKSwgUmFuZ2VFcnJvciwgLy02ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5
MTJcYi8pOworLy8gZG9lcyBub3QgY3Jhc2ggd2hlbiBiaWdpbnQgbG9uZ2VyIHRoYW4gbWF4aW50
MzIgZGlnaXRzCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudChCaWdJbnQo
JzknLnJlcGVhdCgyMTQ3NDgzNjQ3KSkpLCBSYW5nZUVycm9yKTsKKy8vIGNvbnN0cnVjdHMgZnJv
bSBzdHJpbmcKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5JbnN0YW50KCcwJykuZXBvY2hOYW5vc2Vj
b25kcywgMG4pOworLy8gdGhyb3dzIG9uIG51bWJlcgorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRl
bXBvcmFsLkluc3RhbnQoMCksIFR5cGVFcnJvcik7CisvLyB0aHJvd3Mgb24gc3RyaW5nIHRoYXQg
ZG9lcyBub3QgY29udmVydCB0byBCaWdJbnQKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3Jh
bC5JbnN0YW50KCdhYmMxMjMnKSwgU3ludGF4RXJyb3IpOworCisvLyBJbnN0YW50LmZyb20oaW5z
dGFudCkgaXMgbm90IHRoZSBzYW1lIG9iamVjdAoreworICAgIGNvbnN0IGluc3QgPSBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzIwMjAtMDItMTJUMTE6NDIrMDE6MDBbRXVyb3BlL0Ftc3RlcmRhbV0n
KTsKKyAgICBzaG91bGROb3RCZShUZW1wb3JhbC5JbnN0YW50LmZyb20oaW5zdCksIGluc3QpOwor
fQorCisvLyB0b1N0cmluZworCit7CisgICAgY29uc3QgaTEgPSBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjNaJyk7CisgICAgY29uc3QgaTIgPSBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzBaJyk7CisgICAgY29uc3QgaTMgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8vIGRlZmF1
bHQgaXMgdG8gZW1pdCBzZWNvbmRzIGFuZCBkcm9wIHRyYWlsaW5nIHplcm9zIGFmdGVyIHRoZSBk
ZWNpbWFsJworICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjAw
WicpOworICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjMwWicp
OworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRa
Jyk7CisKKyAgICAvLyB0cnVuY2F0ZXMgdG8gbWludXRlCisgICAgW2kxLCBpMiwgaTNdLmZvckVh
Y2goKGkpID0+IHNob3VsZEJlKGkudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnIH0p
LCAnMTk3Ni0xMS0xOFQxNToyM1onKSk7CisKKyAgICAvLyBvdGhlciBzbWFsbGVzdFVuaXRzIGFy
ZSBhbGlhc2VzIGZvciBmcmFjdGlvbmFsIGRpZ2l0cworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5n
KHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vj
b25kRGlnaXRzOiAwIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5p
dDogJ21pbGxpc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiAzIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pY3Jv
c2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA2IH0pKTsK
KyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ25hbm9zZWNvbmQnIH0p
LCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDkgfSkpOworCisgICAgLy8g
dHJ1bmNhdGUgb3IgcGFkIHRvIDIgcGxhY2VzCisgICAgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAyIH07CisgICAgICAgIHNob3VsZEJlKGkxLnRv
U3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzowMC4wMFonKTsKKyAgICAgICAgc2hv
dWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjAwWicpOwor
ICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMTJaJyk7CisgICAgfQorICAgIC8vIHBhZCB0byA3IHBsYWNlcworICAgIHsKKyAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNyB9OworICAgICAgICBz
aG91bGRCZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAuMDAwMDAw
MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlv
bnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0MDAwWicpOworICAgIH0KKworICAgIC8vIHJv
dW5kIHRvIG5lYXJlc3QKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDog
J21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0xOFQxNToy
NFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6
IDMsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjNaJyk7CisgICAgLy8gcm91bmQgdXAKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxs
ZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0xMS0xOFQx
NToyNFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdp
dHM6IDMsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjRa
Jyk7CisgICAgLy8gcm91bmQgZG93bgorICAgIFsnZmxvb3InLCAndHJ1bmMnXS5mb3JFYWNoKChy
b3VuZGluZ01vZGUpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFsbGVz
dFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzWicpOwor
ICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDMs
IHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOworICAgIH0pOwor
CisgICAgeworICAgICAgICAvLyByb3VuZGluZyBkb3duIGlzIHRvd2FyZHMgdGhlIEJpZyBCYW5n
LCBub3QgdG93YXJkcyAxIEJDRQorICAgICAgICBjb25zdCBpNCA9IFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnLTAwMDA5OS0xMi0xNVQxMjowMDowMC41WicpOworICAgICAgICBzaG91bGRCZShpNC50
b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcsIHJvdW5kaW5nTW9kZTogJ2Zsb29yJyB9
KSwgJy0wMDAwOTktMTItMTVUMTI6MDA6MDBaJyk7CisKKyAgICAgICAgLy8gcm91bmRpbmcgY2Fu
IGFmZmVjdCBhbGwgdW5pdHMKKyAgICAgICAgY29uc3QgaTUgPSBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OTk5WicpOworICAgICAgICBzaG91bGRCZShp
NS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDgsIHJvdW5kaW5nTW9kZTogJ2hh
bGZFeHBhbmQnIH0pLCAnMjAwMC0wMS0wMVQwMDowMDowMC4wMDAwMDAwMFonKTsKKyAgICB9Cit9
CisKKy8vIGxlYXAgc2Vjb25kIGlzIGNvbnN0cmFpbmVkCitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzIwMTYtMTItMzFUMjM6NTk6NjBaJyl9YCwgJzIwMTYtMTItMzFUMjM6NTk6
NTlaJyk7CisvLyB2YXJpYW50IHRpbWUgc2VwYXJhdG9ycworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4IDE1OjIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAw
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4dDE1OjIz
WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gdmFyaWFudCBVVEMgZGVzaWduYXRv
cgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzeicp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gYW55IG51bWJlciBvZiBkZWNpbWFsIHBs
YWNlcworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
MzRaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKK3Nob3VsZEJlKGAke1RlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NVonKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xMjM0NVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTZaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzNDU2WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyMzQ1NjdaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKTsK
K3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjM0NTY3OFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3OFonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODla
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5WicpOworLy8gdmFyaWFudCBkZWNp
bWFsIHNlcGFyYXRvcgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4VDE1OjIzOjMwLDEyWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworLy8gdmFy
aWFudCBtaW51cyBzaWduCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTU6MjM6MzAuMTJcdTIyMTIwMjowMCcpfWAsICcxOTc2LTExLTE4VDE3OjIzOjMwLjEy
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCdcdTIyMTIwMDk5OTktMTEt
MThUMTU6MjM6MzAuMTJaJyl9YCwgJy0wMDk5OTktMTEtMThUMTU6MjM6MzAuMTJaJyk7CisvLyBt
aXh0dXJlIG9mIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjErMDAw
MCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4
VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEt
MThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1OjIzOjMwLjErMDAw
MCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5
NzYxMTE4VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAw
OjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CisvLyBvcHRpb25hbCBwYXJ0cworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwKzAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTVaJyl9YCwgJzE5NzYtMTEtMThUMTU6MDA6MDBaJyk7CisvLyBpZ25vcmVzIGFueSBzcGVjaWZp
ZWQgY2FsZW5kYXIKKy8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhcgorLy8gc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpbdS1jYT1k
aXNjb3JkXScpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8vIG5vIGp1
bmsgYXQgZW5kIG9mIHN0cmluZworc2hvdWxkVGhyb3coKCkgPT4gVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpqdW5rJyksIFJhbmdlRXJyb3IpOwor
CisvLyBGb3IgY29udmVuaWVuY2UgaW4gc2V2ZXJhbCB0ZXN0cworY29uc3QgZXBvY2ggPSBuZXcg
VGVtcG9yYWwuSW5zdGFudCgwbik7Citjb25zdCBtaW5WYWx1ZSA9IG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKK2NvbnN0IG1heFZhbHVlID0gbmV3
IFRlbXBvcmFsLkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbik7CisKKy8vIGFk
ZCgpCisKK3sKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBob3VyczogMSB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCAzNjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgaG91
cnM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0zNjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hv
dWxkQmUoZXBvY2guYWRkKHsgbWludXRlczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCA2MF8wMDBf
MDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbnV0ZXM6IC0xIH0pLmVwb2No
TmFub3NlY29uZHMsIC02MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7
IHNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMG4pOworICAgIHNo
b3VsZEJlKGVwb2NoLmFkZCh7IHNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAw
MF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWlsbGlzZWNvbmRzOiAxIH0p
LmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7
IG1pbGxpc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMG4pOworICAg
IHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pY3Jvc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRz
LCAxXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pY3Jvc2Vjb25kczogLTEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFu
b3NlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMW4pOworICAgIHNob3VsZEJlKGVwb2No
LmFkZCh7IG5hbm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMW4pOworfQorCit7
CisgICAgLy8gbWF4IGR1cmF0aW9uIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGFueSBJbnN0YW50Cisg
ICAgc2hvdWxkQmUobWluVmFsdWUuYWRkKHsgaG91cnM6IDQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5h
bm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhW
YWx1ZS5hZGQoeyBob3VyczogLTQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5W
YWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBtaW51
dGVzOiAyODgwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5h
bm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5hZGQoeyBtaW51dGVzOiAtMjg4MF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWluVmFsdWUuYWRkKHsgc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMCB9
KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91
bGRCZShtYXhWYWx1ZS5hZGQoeyBzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMCB9KS5lcG9jaE5h
bm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAvLyBub3RlLCB1bnNh
ZmUgaW50ZWdlcnMgZnJvbSBoZXJlIG9uOyB0aGUgbXVsdGlwbGljYXRpb24gdG8gY29udmVydAor
ICAgIC8vIG1pbGxpc2Vjb25kcyBhbmQgbWljcm9zZWNvbmRzIHRvIG5hbm9zZWNvbmRzIHNob3Vs
ZCB0YWtlIHBsYWNlIGluIHRoZQorICAgIC8vIGJpZ2ludCBkb21haW4uCisgICAgc2hvdWxkQmUo
bWluVmFsdWUuYWRkKHsgbWlsbGlzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwXzAwMCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZSht
YXhWYWx1ZS5hZGQoeyBtaWxsaXNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZSht
aW5WYWx1ZS5hZGQoeyBtaWNyb3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRC
ZShtYXhWYWx1ZS5hZGQoeyBtaWNyb3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWluVmFsdWUuYWRkKHsgbmFub3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAw
MF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbmFub3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAw
XzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29u
ZHMpOworfQorCit7CisgICAgLy8gb3ZlcmZsb3dpbmcgNjQgYml0cworICAgIGNvbnN0IGV4cDY0
ID0gMiAqKiA2NDsKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNl
Y29uZHMnLCAnbWljcm9zZWNvbmRzJ10uZm9yRWFjaCgodW5pdCkgPT4geworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IGV4cDY0IH0pLCBSYW5nZUVycm9yKTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiAtZXhwNjQgfSks
IFJhbmdlRXJyb3IpOworICAgIH0pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG5hbm9zZWNv
bmRzOiBleHA2NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNm4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG5hbm9zZWNvbmRzOiAtZXhwNjQgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxv
d2luZyAxMjggYml0cworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxp
c2Vjb25kcycsICdtaWNyb3NlY29uZHMnLCAnbmFub3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9
PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTogTnVtYmVy
Lk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVw
b2NoLmFkZCh7IFt1bml0XTogLU51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAg
IH0pOworfQorCisvLyBzdWJ0cmFjdCgpCisKK3sKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFj
dCh7IGhvdXJzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0zNjAwXzAwMF8wMDBfMDAwbik7Cisg
ICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBob3VyczogLTEgfSkuZXBvY2hOYW5vc2Vjb25k
cywgMzYwMF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWlu
dXRlczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91
bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pbnV0ZXM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDYw
XzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBzZWNvbmRzOiAx
IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBv
Y2guc3VidHJhY3QoeyBzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IDEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRy
YWN0KHsgbWlsbGlzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBuKTsK
KyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogMSB9KS5lcG9jaE5h
bm9zZWNvbmRzLCAtMV8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pY3Jv
c2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xbik7
CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogLTEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgMW4pOworfQorCit7CisgICAgLy8gbWF4IGR1cmF0aW9uIHRoYXQgY2FuIGJl
IGFkZGVkIHRvIGFueSBJbnN0YW50CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBo
b3VyczogNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFu
b3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgaG91cnM6IC00OF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBtaW51dGVzOiAyODgwXzAwMDBfMDAw
MCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBz
aG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IC0yODgwXzAwMDBfMDAwMCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRC
ZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IHNlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDAgfSkuZXBvY2hO
YW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWlu
VmFsdWUuc3VidHJhY3QoeyBzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAvLyBub3RlLCB1bnNhZmUg
aW50ZWdlcnMgZnJvbSBoZXJlIG9uOyB0aGUgbXVsdGlwbGljYXRpb24gdG8gY29udmVydAorICAg
IC8vIG1pbGxpc2Vjb25kcyBhbmQgbWljcm9zZWNvbmRzIHRvIG5hbm9zZWNvbmRzIHNob3VsZCB0
YWtlIHBsYWNlIGluIHRoZQorICAgIC8vIGJpZ2ludCBkb21haW4uCisgICAgc2hvdWxkQmUobWF4
VmFsdWUuc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVw
b2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJl
KG1pblZhbHVlLnN1YnRyYWN0KHsgbWlsbGlzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBf
MDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsK
KyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogLTE3MjgwMF8w
MDAwXzAwMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9z
ZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAx
NzI4MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbmFu
b3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29u
ZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworfQorCit7CisgICAgLy8gb3ZlcmZsb3dp
bmcgNjQgYml0cworICAgIGNvbnN0IGV4cDY0ID0gMiAqKiA2NDsKKyAgICBbJ2hvdXJzJywgJ21p
bnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJ10uZm9yRWFj
aCgodW5pdCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5zdWJ0cmFjdCh7
IFt1bml0XTogZXhwNjQgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiBlcG9jaC5zdWJ0cmFjdCh7IFt1bml0XTogLWV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICB9
KTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiBleHA2NCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAtZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywg
MTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5nIDEyOCBi
aXRzCisgICAgWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywg
J21pY3Jvc2Vjb25kcycsICduYW5vc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IE51bWJlci5NQVhf
VkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5z
dWJ0cmFjdCh7IFt1bml0XTogLU51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAg
IH0pOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDk2MmQ1MjQ2MjUyNWFmYmIyOTZkOWFjZmQ2ZDhh
MGExNDRmMjBiMzQuLmFlZDYzNGIxOGZjYTZmYTkwOTY0YzhlOTEyYzdhYjYzMmYzYjMxZTcgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTIzLDcgKzIzLDggQEAgc2tpcDoKICAgICAtIGNhbGxhYmxlLWJv
dW5kYXJ5LXJlYWxtcwogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0Nh
bGVuZGFyCi0gICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50CisgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRl
VGltZUlTTwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvTm93CiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L1BsYWluRGF0ZVRpbWUKQEAgLTM0LDcgKzM1LDggQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL1RpbWVab25lCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9ab25l
ZERhdGVUaW1lCiAgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAtIHRl
c3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50CisgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwv
SW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lCisgICAgLSB0ZXN0L2ludGw0MDIvVGVt
cG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAgLSB0ZXN0L2lu
dGw0MDIvVGVtcG9yYWwvTm93CiAgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvUGxhaW5EYXRl
CiAgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQpAQCAtMjQ3LDYgKzI0
OSw3IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90
b3R5cGUvdG9TdHJpbmcvc21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKICAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9jYWxlbmRhci10
ZW1wb3JhbC1vYmplY3QuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9u
L3Byb3RvdHlwZS90b3RhbC91bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKKyAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3NtYWxsZXN0dW5pdC1w
bHVyYWxzLWFjY2VwdGVkLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRp
bWUvY29tcGFyZS9jYWxlbmRhci10ZW1wb3JhbC1vYmplY3QuanMKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL1BsYWluVGltZS9mcm9tL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwog
ICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS9lcXVhbHMv
Y2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCkBAIC0yNzIsNiArMjc1LDEzIEBAIHNraXA6CiAg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvc3VidHJhY3Qv
b3JkZXItb2Ytb3BlcmF0aW9ucy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVy
YXRpb24vcHJvdG90eXBlL3RvdGFsL2RhdGV1bnRpbC1maWVsZC5qcwogCisgICAgIyBEZXBlbmRz
IG9uIFRlbXBvcmFsLlRpbWVab25lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1u
b24taW50ZWdlci5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90
b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itb3V0LW9mLXJh
bmdlLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90
b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci13cm9uZy10eXBlLmpzCisg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90
aW1lem9uZS1zdHJpbmctZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLmpzCisKICAgICAjIERlcGVuZHMg
b24gVGVtcG9yYWwuWm9uZWREYXRlVGltZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
RHVyYXRpb24vY29tcGFyZS9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtbmVnYXRpdmUtZXBvY2hu
YW5vc2Vjb25kcy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vY29t
cGFyZS9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29u
ZHNmb3Itbm9uLWludGVnZXIuanMKQEAgLTI5OSw2ICszMDksMTEgQEAgc2tpcDoKICAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9yZWxhdGl2ZXRv
LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itbm9uLWludGVn
ZXIuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90
b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29u
ZHNmb3Itb3V0LW9mLXJhbmdlLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJh
dGlvbi9wcm90b3R5cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdl
dG9mZnNldG5hbm9zZWNvbmRzZm9yLXdyb25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0luc3RhbnQvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L2Zyb20vYXJndW1lbnQtem9uZWRkYXRl
dGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUv
ZXF1YWxzL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3NpbmNlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMK
KyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3VudGlsL2Fy
Z3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1Bs
YWluVGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtbmVnYXRpdmUtZXBvY2huYW5v
c2Vjb25kcy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBh
cmUvYXJndW1lbnQtem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zv
ci1ub24taW50ZWdlci5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1l
L2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vj
b25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKQEAgLTMzNCw1ICszNDksNiBAQCBza2lwOgogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3JvdW5kL2JhbGFuY2Ut
bmVnYXRpdmUtcmVzdWx0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlv
bi9wcm90b3R5cGUvcm91bmQvcm91bmQtbmVnYXRpdmUtcmVzdWx0LmpzCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvc3VidHJhY3QvYmFsYW5jZS1uZWdh
dGl2ZS1yZXN1bHQuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJv
dG90eXBlL3VudGlsL2luc3RhbnQtc3RyaW5nLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3NpbmNlL2JhbGFuY2UtbmVnYXRpdmUtdGltZS11bml0
cy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS91
bnRpbC9iYWxhbmNlLW5lZ2F0aXZlLXRpbWUtdW5pdHMuanMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442242</attachid>
            <date>2021-10-22 18:50:05 -0700</date>
            <delta_ts>2021-10-25 14:06:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211022185004.patch</filename>
            <type>text/plain</type>
            <size>164174</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2YxMzUwYTVhMjFlYjljNTUyZDMyM2MwYjczNTBmMjNiZWEzMTYyLi4wYzkzOWNhNmVkYjRkMzlk
MzIxMTNkOWE2OWQ2ZGRiZmRlNzEzZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtjbGFuZyAxM10gU3VwcHJlc3Mgc2lnbiBjb21wYXJpc29uIHdhcm5p
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDhjMDJhZmJkNWI3YjI1M2Q1M2I3ZDA1Nzc2ZGMyOWRmODMzOTllM2EuLjI1MWQ3
MDY5NjE5OTRkNWE1OWMxNjAzZjIwMWE4ODBjN2NhN2I3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMjEtMTAtMjEgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
OiBEb24ndCB1c2UgYnVpbHRpbiBvcGVyYXRpb25zIGlmIF9faW50MTI4IGlzCisgICAgICAgICAg
YmVpbmcgZW11bGF0ZWQgdXNpbmcgV1RGOjpJbnQxMjguIEFsc28gd29yayBhcm91bmQgQ2xhbmcv
TGludXggYnVnCisgICAgICAgICAgd2hlcmUgX19idWlsdGluX211bF9vdmVyZmxvdygpIGRvZXNu
J3Qgd29yayBvbiBfX2ludDEyOC4KKyAgICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQwNAorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAg
ICAoV1RGOjp0aW1lVG9NUyk6IE1vdmVkIGZyb20gSlNEYXRlTWF0aC5oLgorICAgICAgICAqIHd0
Zi9JbnQxMjguaDoKKyAgICAgICAgKFdURjo6SW50MTI4SW1wbDo6SW50MTI4SW1wbCk6IEFkZCBh
biBleHBsaWNpdCBjb25zdHJ1Y3RvciBmb3IgZG91YmxlLAorICAgICAgICAgIHVzaW5nIGltcGxl
bWVudGF0aW9uIG9mIF9fZml4ZGZ0aSgpIGFuZCBfX2ZpeHVuc2RmdGkoKSBmcm9tIENsYW5nCisg
ICAgICAgICAgY29tcGlsZXJfcnQuIEFsc28gYWRkIGEgY29udmVyc2lvbiBmcm9tIEludDEyOCB0
byBVSW50MTI4CisgICAgICAgICAgYW5kIHZpY2UgdmVyc2EsIGZvciB1c2UgaW4gVGVtcG9yYWwu
SW5zdGFudC4KKyAgICAgICAgKFdURjo6SW50MTI4SW1wbDo6b3BlcmF0b3IgZG91YmxlIGNvbnN0
KTogQWRkIGFuIGV4cGxpY2l0IGNvbnZlcnNpb24KKyAgICAgICAgICBvcGVyYXRvciB0byBkb3Vi
bGUuIEN1cnJlbnRseSB1c2VzIGEgc2xvd2VyIGFsZ29yaXRobSwgcGVuZGluZworICAgICAgICAg
IGludmVzdGlnYXRpb24gb2YgdXNpbmcgaW1wbGVtZW50YXRpb24gb2YgX19mbG9hdHRpZGYoKSBh
bmQKKyAgICAgICAgICBfX2Zsb2F0dW50aWRmKCkuCisgICAgICAgIChXVEY6OkludDEyOEltcGw6
OmRvdWJsZUFzQml0cyk6IEhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdURjo6SW50MTI4SW1w
bDo6Yml0c0FzRG91YmxlKTogSGVscGVyIGZ1bmN0aW9uLgorCiAyMDIxLTEwLTE5ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9sZCBHQ0Mgd29y
a2Fyb3VuZCBmb3IgQWxsb2NhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggOGI5MTgyY2VkMTAxOTUxYThkMDA1YjA2YjdlMTdjMTk2MWFkYTA3Ni4uOTJiZjk1NjNiZjlk
ZjliODNlY2U4NTM0MjViMjk1NzZhMzEyNmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVU
X1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3IuY3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNw
cAogICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
aW5kZXggNWM0N2FmOTlkNDE3OGIyYzllNjRkMjU1ZThlOTMzYzA4MDEyNDFkNi4uNzY4MTMwYjBi
NzAzZWFlMjA1NjE4M2FiNjhhNzQzNTZmMjc3ZjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsx
NzUsOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAor
JChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyQo
UFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9K
RUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5U
aW1lQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMTEyMjlkNTdiMmIzYmU4OGYxODBj
YzZlODA3MTczNWVlNGNmYTllYy4uNjVmNDk2ZjI4MmM3MTA3ODk2MDJjNThhNTVmMWZjZTk4ZGJk
ZDJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3Iu
bHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
bHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjOTI3YTU0ZWY3NTM4ZWI5NWQ1MzU2N2Y4NjE3
ZWVhYjgxNTUyZjBlLi42ZTViMTZhNzNhMjY1MWFkM2Y2YzA0NDAxNDYyNTY0NWQ2ODk1MTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk3LDYgKzE5
Nyw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAg
IFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggXAog
ICAgIFRlbXBvcmFsTm93Lmx1dC5oIFwKICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAg
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDNkZjNhNjE4NmY2M2Y4MzQ0MmRmMTdjZTI5MzQyMDQyODkzZjJiZGYuLjNk
OTQ3Njg1NjdhMWUwZmNhNjFhM2Q5YWQyY2MxNjgwZjlmZjJiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xOTc0LDYgKzE5NzQsMTEgQEAKIAkJRTNGRjc1MzMxRDlDRUExODAw
QzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdl
dHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEy
RUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0Ey
NkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovOyB9OworCQlGNkQ2N0Q0MjI2
RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcwMDZF
MDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0NDI2
RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggKi87IH07CisJCUY2RDY3RDQ3MjZGOTEz
MEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEwMDZF
MDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZENjdE
NDgyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZGOTEz
MEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUY2
RjE1MDIxMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAwMDRC
OThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3MzAw
OTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA0MTU1MjI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0
b3JNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTA1RkFGRDFGRTRDRURBMDAwOTMyMzAgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJE
NkExMTFGQkQ0OTFEMDAwMjQ1RjQgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgKi87
IH07CkBAIC01MzcxLDYgKzUzNzYsMTQgQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8q
IFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAx
RkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRl
bXBvcmFsSW5zdGFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZW1wb3JhbEluc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Qz
QTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2
N0QzQzI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5
IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0
NTI2RjkxMzBBMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3Jh
bE5vdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE5vdy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyog
VGVtcG9yYWxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVtcG9yYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAx
QTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTcxMDYsNiArNzExOSw4IEBACiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8q
IFN5bWJvbFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYg
LyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUUzQzQ2MzA2MjZE
QjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAorCQkJ
CUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5s
dXQuaCAqLywKKwkJCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1w
b3JhbE9iamVjdC5sdXQuaCAqLywKIAkJCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2Fz
bU9wcy5oICovLAogCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtODA3NSw2ICs4MDkwLDEyIEBACiAJ
CQkJQTNDN0VEQjQyNkIwREIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rv
ci5oICovLAogCQkJCUEzQzdFREI1MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9u
UHJvdG90eXBlLmNwcCAqLywKIAkJCQlBM0M3RURCMDI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZS5oICovLAorCQkJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnQuY3BwICovLAorCQkJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnQuaCAqLywKKwkJCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUY2RDY3RDNDMjZGOTAyRTcw
MDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3RDNE
MjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovLAorCQkJ
CUY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAq
LywKIAkJCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuY3BwICovLAog
CQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2
RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCkBAIC0xMDgx
OCw2ICsxMDgzOSwxMSBAQAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3Jh
bER1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUg
LyogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3
RURCNjI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2Rjkx
MzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUw
MjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTM4NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKaW5kZXggZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uZGZjOTY3
N2UzMTY0MDI2NjMyNGQyMTMwYmJkMzVmNjk1MzBjZWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTAyMSw2ICsxMDIxLDkgQEAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAogcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5
cGUuY3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SVNPODYwMS5jcHAKaW5kZXggNTliMWM3ZWY1YjM5M2QyZGE0OWU0MjY2OTk0NDAzNjY3NjhiOWE1
MC4uNDEwOTA0MDgyNzU4YTEzYzY0YjU2YTdiZGU0YmI3ODg5ZDI1Y2NkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKIAogI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUgPGxp
bWl0cz4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYv
RGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTg3Nyw2ICs4NzksMzcg
QEAgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFp
blRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWUKICAgICB9KTsKIH0KIAorc3RkOjpvcHRpb25hbDxF
eGFjdFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGVtcG9yYWxJbnN0YW50U3RyaW5n
CisgICAgLy8gVGVtcG9yYWxJbnN0YW50U3RyaW5nIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lWm9u
ZU9mZnNldFJlcXVpcmVkCisgICAgLy8gICAgIERhdGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNw
ZWMgVGltZVpvbmVPZmZzZXRSZXF1aXJlZAorCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyBUaW1lWm9u
ZU9mZnNldFJlcXVpcmVkIDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXQgVGltZVpvbmVC
cmFja2V0ZWRBbm5vdGF0aW9uX29wdAorCisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFy
c2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4g
eworICAgICAgICBhdXRvIGRhdGV0aW1lID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAg
ICBpZiAoIWRhdGV0aW1lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgYXV0byBbZGF0ZSwgbWF5YmVUaW1lLCBtYXliZVRpbWVab25lXSA9IGRhdGV0aW1lLnZhbHVl
KCk7CisgICAgICAgIGlmICghbWF5YmVUaW1lWm9uZSB8fCAoIW1heWJlVGltZVpvbmUtPm1feiAm
JiAhbWF5YmVUaW1lWm9uZS0+bV9vZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyIGFubm90YXRpb24KKyAgICAg
ICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICAgICAgUGxhaW5UaW1lIHRpbWU7CisgICAgICAgIGlmIChtYXliZVRpbWUpCisgICAg
ICAgICAgICB0aW1lID0gbWF5YmVUaW1lLnZhbHVlKCk7CisKKyAgICAgICAgaW50NjRfdCBvZmZz
ZXQgPSBtYXliZVRpbWVab25lLT5tX3ogPyAwIDogKm1heWJlVGltZVpvbmUtPm1fb2Zmc2V0Owor
ICAgICAgICByZXR1cm4geyBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnll
YXIoKSwgZGF0ZS5tb250aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUo
KSwgdGltZS5zZWNvbmQoKSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCks
IHRpbWUubmFub3NlY29uZCgpLCBvZmZzZXQpIH07CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWZvcm1hdHRpbWV6b25lb2Zm
c2V0c3RyaW5nCiBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZz
ZXQpCiB7CkBAIC05NjksNSArMTAwMiwxMjkgQEAgYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3Qg
RHVyYXRpb24mIGR1cmF0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitFeGFjdFRpbWUgRXhh
Y3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWlu
dDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1z
LCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBB
U1NFUlQoeSA+PSAtOTk5OTk5ICYmIHkgPD0gOTk5OTk5KTsKKyAgICBBU1NFUlQobW9uID49IDEg
JiYgbW9uIDw9IDEyKTsKKyAgICBBU1NFUlQoZCA+PSAxICYmIGQgPD0gMzEpOworICAgIEFTU0VS
VChoID49IDAgJiYgaCA8PSAyMyk7CisgICAgQVNTRVJUKG1pbiA+PSAwICYmIG1pbiA8PSA1OSk7
CisgICAgQVNTRVJUKHMgPj0gMCAmJiBzIDw9IDU5KTsKKyAgICBBU1NFUlQobXMgPj0gMCAmJiBt
cyA8PSA5OTkpOworICAgIEFTU0VSVChtaWNyb3MgPj0gMCAmJiBtaWNyb3MgPD0gOTk5KTsKKyAg
ICBBU1NFUlQobnMgPj0gMCAmJiBucyA8PSA5OTkpOworCisgICAgZG91YmxlIGRhdGVEYXlzID0g
ZGF0ZVRvRGF5c0Zyb20xOTcwKHksIG1vbiAtIDEsIGQpOworICAgIGRvdWJsZSB0aW1lTXMgPSB0
aW1lVG9NUyhoLCBtaW4sIHMsIG1zKTsKKyAgICBkb3VibGUgdXRjTXMgPSBkYXRlRGF5cyAqIG1z
UGVyRGF5ICsgdGltZU1zOworICAgIEludDEyOCB1dGNOcyA9IHN0YXRpY19jYXN0PEludDEyOD4o
dXRjTXMpICogMScwMDAnMDAwICsgbWljcm9zICogMTAwMCArIG5zOworICAgIHJldHVybiBFeGFj
dFRpbWUgeyB1dGNOcyAtIG9mZnNldCB9OworfQorCit1c2luZyBDaGVja2VkSW50MTI4ID0gQ2hl
Y2tlZDxJbnQxMjgsIFJlY29yZE92ZXJmbG93PjsKKworc3RhdGljIENoZWNrZWRJbnQxMjggY2hl
Y2tlZENhc3REb3VibGVUb0ludDEyOChkb3VibGUgbikKK3sKKyAgICAvLyBCYXNlZCBvbiBfX2Zp
eGRmdGkoKSBhbmQgX19maXh1bnNkZnRpKCkgZnJvbSBjb21waWxlcl9ydDoKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEw
NDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXhpbnRf
aW1wbC5pbmMKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxv
Yi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0L2xp
Yi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwuaW5jCisKKyAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBzaWduaWZpY2FuZEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyAt
IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaXRzID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46OmRpZ2l0cyAtIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
ZGlnaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4cG9uZW50QmlhcyA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2V4cG9uZW50IC0gMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ2NF90IGltcGxpY2l0Qml0ID0gdWludDY0X3QgeyAxIH0gPDwgc2lnbmlmaWNhbmRC
aXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbmlmaWNhbmRNYXNrID0gaW1w
bGljaXRCaXQgLSB1aW50NjRfdCB7IDEgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IHNpZ25NYXNrID0gdWludDY0X3QgeyAxIH0gPDwgKHNpZ25pZmljYW5kQml0cyArIGV4cG9uZW50
Qml0cyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBhYnNNYXNrID0gc2lnbk1hc2sg
LSB1aW50NjRfdCB7IDEgfTsKKworICAgIC8vIEJyZWFrIG4gaW50byBzaWduLCBleHBvbmVudCwg
c2lnbmlmaWNhbmQgcGFydHMuCisgICAgY29uc3QgdWludDY0X3QgYml0cyA9ICpyZWludGVycHJl
dF9jYXN0PHVpbnQ2NF90Kj4oJm4pOworICAgIGNvbnN0IHVpbnQ2NF90IG5BYnMgPSBiaXRzICYg
YWJzTWFzazsKKyAgICBjb25zdCBpbnQgc2lnbiA9IGJpdHMgJiBzaWduTWFzayA/IC0xIDogMTsK
KyAgICBjb25zdCBpbnQgZXhwb25lbnQgPSAobkFicyA+PiBzaWduaWZpY2FuZEJpdHMpIC0gZXhw
b25lbnRCaWFzOworICAgIGNvbnN0IHVpbnQ2NF90IHNpZ25pZmljYW5kID0gKG5BYnMgJiBzaWdu
aWZpY2FuZE1hc2spIHwgaW1wbGljaXRCaXQ7CisKKyAgICAvLyBJZiBleHBvbmVudCBpcyBuZWdh
dGl2ZSwgdGhlIHJlc3VsdCBpcyB6ZXJvLgorICAgIGlmIChleHBvbmVudCA8IDApCisgICAgICAg
IHJldHVybiB7IDAgfTsKKworICAgIC8vIElmIHRoZSB2YWx1ZSBpcyB0b28gbGFyZ2UgZm9yIHRo
ZSBpbnRlZ2VyIHR5cGUsIG92ZXJmbG93LgorICAgIGlmIChleHBvbmVudCA+PSAxMjgpCisgICAg
ICAgIHJldHVybiB7IFdURjo6UmVzdWx0T3ZlcmZsb3dlZCB9OworCisgICAgLy8gSWYgMCA8PSBl
eHBvbmVudCA8IHNpZ25pZmljYW5kQml0cywgcmlnaHQgc2hpZnQgdG8gZ2V0IHRoZSByZXN1bHQu
CisgICAgLy8gT3RoZXJ3aXNlLCBzaGlmdCBsZWZ0LgorICAgIEludDEyOCByZXN1bHQgeyBzaWdu
aWZpY2FuZCB9OworICAgIGlmIChleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cykKKyAgICAgICAg
cmVzdWx0ID4+PSBzaWduaWZpY2FuZEJpdHMgLSBleHBvbmVudDsKKyAgICBlbHNlCisgICAgICAg
IHJlc3VsdCA8PD0gZXhwb25lbnQgLSBzaWduaWZpY2FuZEJpdHM7CisgICAgcmVzdWx0ICo9IHNp
Z247CisgICAgcmV0dXJuIHsgcmVzdWx0IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1l
PiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQo
IWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOworICAg
IEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlzKCkp
OworCisgICAgQ2hlY2tlZEludDEyOCByZXN1bHROcyB7IG1fZXBvY2hOYW5vc2Vjb25kcyB9Owor
CisgICAgLy8gVGhlIGR1cmF0aW9uJ3MgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBtaWxs
aXNlY29uZHMgc2hvdWxkIGJlCisgICAgLy8gYWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1iaXQg
aW50LiAyKjFlOCAyNC1ob3VyIGRheXMgaXMgdGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNwYW4g
Zm9yIGV4YWN0IHRpbWUsIHNvIGlmIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlvbiBl
eGNlZWRzCisgICAgLy8gdGhhdCwgdGhlbiB3ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBDaGVja2Vk
SW50MTI4IGhvdXJzID0gY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5ob3Vycygp
KTsKKyAgICByZXN1bHROcyArPSBob3VycyAqIEV4YWN0VGltZTo6bnNQZXJIb3VyOworICAgIENo
ZWNrZWRJbnQxMjggbWludXRlcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24u
bWludXRlcygpKTsKKyAgICByZXN1bHROcyArPSBtaW51dGVzICogRXhhY3RUaW1lOjpuc1Blck1p
bnV0ZTsKKyAgICBDaGVja2VkSW50MTI4IHNlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50
MTI4KGR1cmF0aW9uLnNlY29uZHMoKSk7CisgICAgcmVzdWx0TnMgKz0gc2Vjb25kcyAqIEV4YWN0
VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgQ2hlY2tlZEludDEyOCBtaWxsaXNlY29uZHMgPSBjaGVj
a2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpKTsKKyAgICByZXN1
bHROcyArPSBtaWxsaXNlY29uZHMgKiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7CisgICAg
Q2hlY2tlZEludDEyOCBtaWNyb3NlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1
cmF0aW9uLm1pY3Jvc2Vjb25kcygpKTsKKyAgICByZXN1bHROcyArPSBtaWNyb3NlY29uZHMgKiBF
eGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMgKz0gY2hlY2tlZENhc3RE
b3VibGVUb0ludDEyOChkdXJhdGlvbi5uYW5vc2Vjb25kcygpKTsKKyAgICBpZiAocmVzdWx0TnMu
aGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgRXhh
Y3RUaW1lIHJlc3VsdCB7IHJlc3VsdE5zLnZhbHVlKCkgfTsKKyAgICBpZiAoIXJlc3VsdC5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworSW50MTI4IEV4YWN0VGltZTo6cm91bmQoSW50MTI4IHF1YW50aXR5LCB1bnNpZ25lZCBp
bmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQor
eworICAgIEludDEyOCBpbmNyZW1lbnROcyB7IGluY3JlbWVudCB9OworICAgIHN3aXRjaCAodW5p
dCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRp
bWU6Om5zUGVySG91cjsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogaW5j
cmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pbnV0ZTsgYnJlYWs7CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6OlNlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1BlclNlY29uZDsg
YnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiBpbmNyZW1lbnROcyAq
PSBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpNaWNyb3NlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vj
b25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJl
dHVybiByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnROcywgcm91bmRp
bmdNb2RlKTsKK30KKworLy8gRGlmZmVyZW5jZUluc3RhbnQgKCBuczEsIG5zMiwgcm91bmRpbmdJ
bmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlICkKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWRpZmZlcmVuY2VpbnN0YW50CitJbnQx
MjggRXhhY3RUaW1lOjpkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwgdW5zaWduZWQgaW5jcmVt
ZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkgY29uc3QK
K3sKKyAgICBJbnQxMjggZGlmZiA9IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kcyAtIG1fZXBvY2hO
YW5vc2Vjb25kczsKKyAgICByZXR1cm4gcm91bmQoZGlmZiwgaW5jcmVtZW50LCB1bml0LCByb3Vu
ZGluZ01vZGUpOworfQorCitFeGFjdFRpbWUgRXhhY3RUaW1lOjpyb3VuZCh1bnNpZ25lZCBpbmNy
ZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25z
dAoreworICAgIHJldHVybiBFeGFjdFRpbWUgeyByb3VuZChtX2Vwb2NoTmFub3NlY29uZHMsIGlu
Y3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2RlKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084
NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2
MDEuaAppbmRleCBjNzQyNGFlOTMxZWZlMWI1MGRjMGFjZDIyYmYyMWI5OTcwOTU2YTZmLi4xY2Ji
NmI0ZmQ4MDVkMTU3MTJjOTg1YjlkY2M4MjQxNzdlZTc5MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvSW50
MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIElTTzg2MDEgewpAQCAtNzksNiAr
ODAsMTIyIEBAIHByaXZhdGU6CiAgICAgc3RkOjphcnJheTxkb3VibGUsIG51bWJlck9mVGVtcG9y
YWxVbml0cz4gbV9kYXRhIHsgfTsKIH07CiAKK2NsYXNzIEV4YWN0VGltZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQoRXhhY3RUaW1lKTsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgRXhh
Y3RUaW1lKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBFeGFjdFRpbWUoY29uc3QgRXhhY3RU
aW1lJikgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBFeGFjdFRpbWUoSW50MTI4
IGVwb2NoTmFub3NlY29uZHMpIDogbV9lcG9jaE5hbm9zZWNvbmRzKGVwb2NoTmFub3NlY29uZHMp
IHsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoU2Vjb25kcyhp
bnQ2NF90IGVwb2NoU2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50
MTI4IHsgZXBvY2hTZWNvbmRzIH0gKiBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGludDY0
X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhhY3RUaW1lKElu
dDEyOCB7IGVwb2NoTWlsbGlzZWNvbmRzIH0gKiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQp
OworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBvY2hNaWNyb3Nl
Y29uZHMoaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBF
eGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWNyb3NlY29uZHMgfSAqIEV4YWN0VGltZTo6bnNQZXJN
aWNyb3NlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBFeGFjdFRpbWUgZnJvbUlTT1BhcnRzQW5k
T2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24sIHVpbnQ4X3QgZCwgdW5zaWduZWQgaCwgdW5z
aWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25lZCBtcywgdW5zaWduZWQgbWljcm9zLCB1bnNp
Z25lZCBucywgaW50NjRfdCBvZmZzZXQpOworCisgICAgY29uc3RleHByIGludDY0X3QgZXBvY2hT
ZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9lcG9jaE5hbm9zZWNvbmRzIC8gRXhhY3RU
aW1lOjpuc1BlclNlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhwciBpbnQ2NF90IGVwb2NoTWls
bGlzZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9lcG9jaE5hbm9zZWNvbmRzIC8gRXhh
Y3RUaW1lOjpuc1Blck1pbGxpc2Vjb25kKTsKKyAgICB9CisgICAgY29uc3RleHByIGludDY0X3Qg
ZXBvY2hNaWNyb3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29u
ZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIg
SW50MTI4IGVwb2NoTmFub3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
VmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorCisg
ICAgY29uc3RleHByIGludCBuYW5vc2Vjb25kc0ZyYWN0aW9uKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fZXBvY2hOYW5vc2Vjb25kcyAlIEV4YWN0VGlt
ZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKworICAgIFN0cmluZyBhc1N0cmluZygpIGNvbnN0Cisg
ICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGlmIChtX2Vwb2No
TmFub3NlY29uZHMgPCAwKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLScpOworICAg
ICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIC1tX2Vwb2NoTmFub3NlY29uZHMpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCBtX2Vwb2NoTmFu
b3NlY29uZHMpOworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIH0KKwor
ICAgIC8vIElzVmFsaWRFcG9jaE5hbm9zZWNvbmRzICggZXBvY2hOYW5vc2Vjb25kcyApCisgICAg
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXN2YWxp
ZGVwb2NobmFub3NlY29uZHMKKyAgICBjb25zdGV4cHIgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gRXhhY3RUaW1lOjptaW5W
YWx1ZSAmJiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gRXhhY3RUaW1lOjptYXhWYWx1ZTsKKyAgICB9
CisKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoRXhhY3RUaW1lIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA8IG90aGVyLm1fZXBvY2hO
YW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShFeGFjdFRp
bWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRz
IDw9IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9lcG9jaE5hbm9zZWNvbmRzID09IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9Cisg
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzICE9IG90aGVyLm1fZXBvY2hOYW5v
c2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShFeGFjdFRpbWUg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID49
IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I+KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vw
b2NoTmFub3NlY29uZHMgPiBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorCisgICAg
c3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IGFkZChEdXJhdGlvbikgY29uc3Q7CisgICAgSW50MTI4
IGRpZmZlcmVuY2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFs
VW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKyAgICBFeGFjdFRpbWUgcm91bmQodW5zaWduZWQg
aW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggZGF5UmFuZ2VTZWNvbmRzIHsgODY0MDAnMDAw
MDAwMDAgfTsgLy8gMWU4IGRheXMKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blck1p
Y3Jvc2Vjb25kIHsgMTAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWls
bGlzZWNvbmQgeyAxJzAwMCcwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Bl
clNlY29uZCB7IDEnMDAwJzAwMCcwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBu
c1Blck1pbnV0ZSA9IG5zUGVyU2Vjb25kICogNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQx
MjggbnNQZXJIb3VyID0gbnNQZXJNaW51dGUgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIElu
dDEyOCBtaW5WYWx1ZSA9IC1kYXlSYW5nZVNlY29uZHMgKiBuc1BlclNlY29uZDsKKyAgICBzdGF0
aWMgY29uc3RleHByIEludDEyOCBtYXhWYWx1ZSA9IGRheVJhbmdlU2Vjb25kcyAqIG5zUGVyU2Vj
b25kOworCisgICAgc3RhdGljIHZvaWQgYXNTdHJpbmdJbXBsKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIEludDEyOCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSA+IDkpCisgICAgICAg
ICAgICBhc1N0cmluZ0ltcGwoYnVpbGRlciwgdmFsdWUgLyAxMCk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSAlIDEwKSArICcwJyk7CisgICAgfQor
CisgICAgc3RhdGljIEludDEyOCByb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3Jl
bWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpOworCisgICAgSW50MTI4IG1fZXBvY2hO
YW5vc2Vjb25kcyB7IH07Cit9OworCiBjbGFzcyBQbGFpblRpbWUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEKFBsYWluVGltZSk7CiBwdWJsaWM6CkBAIC0xNjgsNSArMjg1LDcgQEAgU3Ry
aW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24s
IHVuc2lnbmVkPiBwcmVjaXNpb24KIAogYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRp
b24mKTsKIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdWaWV3
KTsKKwogfSAvLyBuYW1lc3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4
IGE1MDlkOTJkNjNlOTViZWYwMDYyMGEzMDZhM2E1NWYwNGE2NTYzODIuLmMxN2Q3ZTc0MjFkMTll
OTA1NGY1NjkzZTcwOGQxYTJmZjU4NGIwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC05NCw2ICs5NCw4IEBAIHByaXZh
dGU6CiAKICAgICBVRGF0ZUludGVydmFsRm9ybWF0KiBjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJ
Zk5lY2Vzc2FyeShKU0dsb2JhbE9iamVjdCopOwogCisgICAgc3RhdGljIGRvdWJsZSBoYW5kbGVE
YXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKICAgICBlbnVtIGNsYXNz
IFdlZWtkYXkgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVu
dW0gY2xhc3MgRXJhIDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcgfTsKICAg
ICBlbnVtIGNsYXNzIFllYXIgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDc1ODRjZjBjZmIxMjllYmNmOGFiZjQ1M2Yz
ZWJlYWY0Yjk3MWNmM2IuLjZlNGQ2MjVjNTAyZjIwYzQzYmY5ZDYzOGEyZWIzYTgyZjgyYzMzNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTAsNiAr
OTEsMjcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAorLy8gSGFuZGxlRGF0ZVRpbWVWYWx1ZSAoIGRhdGVU
aW1lRm9ybWF0LCB4ICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLWhhbmRsZWRhdGV0aW1ldmFsdWUKK2RvdWJsZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB4KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoeC5pc1VuZGVmaW5lZCgpKQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRhdGVOb3dJbXBsKCkudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KSk7CisKKyAgICAvLyBGSVhNRToKKyAgICAvLyAgLSBBZGQgYWxsIG9mIHRo
ZSBvdGhlciBUZW1wb3JhbCB0eXBlcworICAgIC8vICAtIFdvcmsgaW4gZXBvY2ggbmFub3NlY29u
ZHMKKyAgICAvLyAgLSBSZXR1cm4gVURhdGVGb3JtYXQgYW5kIFVEYXRlSW50ZXJ2YWxGb3JtYXQg
ZGVwZW5kaW5nIG9uIHRoZSB0eXBlCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgeCk7CisgICAgaWYgKGluc3RhbnQpCisg
ICAgICAgIHJldHVybiBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE1pbGxpc2Vjb25kcygpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBXVEY6OnRpbWVDbGlwKHgudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KSkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVU
aW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKQEAgLTEwMCwxNCArMTIyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxE
YXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFsT2JqZWN0KgogICAgIElu
dGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAgICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSkp
KTsKIH0KQEAgLTE1NiwxNCArMTcyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAoSlNHbG9iYWwKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKICAgICBKU1ZhbHVl
IGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJsZSB2YWx1ZTsKLQotICAg
IGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50
b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAgICB2YWx1ZSA9IFdURjo6
dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQorICAgIGRvdWJsZSB2
YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmpl
Y3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+
Zm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTg1LDkgKzE5NSw5
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0UmFuZ2UsIChKU0dsb2JhbE9iCiAgICAgaWYgKHN0YXJ0RGF0ZVZhbHVlLmlzVW5k
ZWZpbmVkKCkgfHwgZW5kRGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgb3IgZW5kRGF0
ZSBpcyB1bmRlZmluZWQiX3MpOwogCi0gICAgZG91YmxlIHN0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZVZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IEludGxE
YXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0
ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGRvdWJs
ZSBlbmREYXRlID0gZW5kRGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91
YmxlIGVuZERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xv
YmFsT2JqZWN0LCBlbmREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgaWYgKHN0YXJ0RGF0ZSA+IGVuZERhdGUpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0
aGFuIGVuZERhdGUiX3MpOwpAQCAtMjEyLDkgKzIyMiw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2VUb1BhcnRzLCAo
SlNHCiAgICAgaWYgKHN0YXJ0RGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kRGF0ZVZhbHVl
LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydERhdGUgb3IgZW5kRGF0ZSBpcyB1bmRlZmluZWQiX3MpOwogCi0g
ICAgZG91YmxlIHN0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0
ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGRvdWJsZSBlbmREYXRlID0gZW5kRGF0ZVZhbHVl
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIGVuZERhdGUgPSBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBlbmREYXRlVmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKHN0YXJ0RGF0
ZSA+IGVuZERhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0aGFuIGVuZERhdGUiX3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDE3NGIwZjhhZTdmZWRi
YjMyNDNmNDRhZWRlNTQzMGNiZjJmMjQxYjIuLjRiNTk2YzI3YTZiMzRhMjFiOTk0OTdjMTQ3OWZj
Zjc2OGQ1MDgyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYv
SW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0yMzEsNiArMjMyLDYyIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVlKQogICAgIHJldHVybiBjcmVh
dGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHVuc2lnbmVkVmFsdWUsIHNpZ24pOwogfQogCitKU0Jp
Z0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SW50MTI4IHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIXZhbHVlKQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZVplcm8oZ2xvYmFsT2JqZWN0
KSk7CisKKyAgICBVSW50MTI4IHVuc2lnbmVkVmFsdWU7CisgICAgYm9vbCBzaWduID0gZmFsc2U7
CisgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICB1bnNpZ25lZFZhbHVlID0gc3RhdGljX2Nh
c3Q8VUludDEyOD4oLSh2YWx1ZSArIDEpKSArIDE7CisgICAgICAgIHNpZ24gPSB0cnVlOworICAg
IH0gZWxzZQorICAgICAgICB1bnNpZ25lZFZhbHVlID0gdmFsdWU7CisKKyAgICBpZiAodW5zaWdu
ZWRWYWx1ZSA8PSBVSU5UNjRfTUFYKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2ln
bmVkVmFsdWUpLCBzaWduKSk7CisKKyAgICBpZiBjb25zdGV4cHIgKHNpemVvZihEaWdpdCkgPT0g
OCkgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChnbG9iYWxP
YmplY3QsIDIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
KworICAgICAgICBEaWdpdCBsb3dCaXRzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlKSk7CisgICAgICAgIERpZ2l0IGhpZ2hCaXRzID0gc3Rh
dGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+IDY0
KSk7CisKKyAgICAgICAgQVNTRVJUKGhpZ2hCaXRzKTsKKworICAgICAgICBiaWdJbnQtPnNldERp
Z2l0KDAsIGxvd0JpdHMpOworICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGhpZ2hCaXRzKTsK
KyAgICAgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgICAgICByZXR1cm4gYmlnSW50Owor
ICAgIH0KKworICAgIEFTU0VSVChzaXplb2YoRGlnaXQpID09IDQpOworCisgICAgRGlnaXQgZGln
aXQwID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZh
bHVlKSk7CisgICAgRGlnaXQgZGlnaXQxID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+IDMyKSk7CisgICAgRGlnaXQgZGlnaXQyID0gc3Rh
dGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+IDY0
KSk7CisgICAgRGlnaXQgZGlnaXQzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+IDk2KSk7CisKKyAgICBBU1NFUlQoZGlnaXQyIHx8IGRp
Z2l0Myk7CisKKyAgICBpbnQgbGVuZ3RoID0gZGlnaXQzID8gNCA6IDM7CisgICAgSlNCaWdJbnQq
IGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgoZ2xvYmFsT2JqZWN0LCBsZW5ndGgpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgYmlnSW50LT5zZXREaWdp
dCgwLCBkaWdpdDApOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgZGlnaXQxKTsKKyAgICBiaWdJ
bnQtPnNldERpZ2l0KDIsIGRpZ2l0Mik7CisgICAgaWYgKGRpZ2l0MykKKyAgICAgICAgYmlnSW50
LT5zZXREaWdpdCgzLCBkaWdpdDMpOworICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAgICBy
ZXR1cm4gYmlnSW50OworfQorCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApp
bmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li44OGYzYzM5MDM5
OTEyMmUyMzdhZTJhMTg2MTE2MzNiNmRhNjc5NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlIDx3dGYvQ2FnZWRVbmlxdWVQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc0LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVpbnQzMl90IHZhbHVlKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxP
YmplY3QqLCBpbnQ2NF90IHZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNC
aWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCB2YWx1ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2Jq
ZWN0KiwgSW50MTI4IHZhbHVlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNH
bG9iYWxPYmplY3QqLCBib29sIHZhbHVlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZy
b20oSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpOwogCkBAIC02MDUsOCArNjA3LDYgQEAg
cHJpdmF0ZToKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50NjRfdCB0b0JpZ1VJ
bnQ2NEhlYXAoSlNCaWdJbnQqKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiB0b1VpbnQ2NEhlYXAoSlNCaWdJbnQqKTsKLQogICAgIGlubGlu
ZSBzdGF0aWMgc2l6ZV90IG9mZnNldE9mRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTQmlnSW50LCBtX2RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGVNYXRoLmNwcAppbmRleCBkYWU5YjNhOWJjOTJmYmFmZDRlMzAxOTRiNGQx
YThkODNkYmQyY2ZmLi41MjE5ZjhmNzI0MmI4NmY5NDBlODI4MjM1ODRlNjFmZTJiYTQ5ZTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcApAQCAtMjY5
LDExICsyNjksNiBAQCBMb2NhbFRpbWVPZmZzZXQgRGF0ZUNhY2hlOjpsb2NhbFRpbWVPZmZzZXQo
ZG91YmxlIG1pbGxpc2Vjb25kc0Zyb21FcG9jaCwgV1RGOjpUaQogICAgIHJldHVybiBvZmZzZXQ7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3VyLCBkb3VibGUg
bWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCi17Ci0gICAgcmV0dXJuICgoKGhvdXIgKiBXVEY6
Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0ZSArIHNlYykgKiBX
VEY6Om1zUGVyU2Vjb25kICsgbXMpOwotfQotCiBkb3VibGUgRGF0ZUNhY2hlOjpncmVnb3JpYW5E
YXRlVGltZVRvTVMoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIGRvdWJsZSBtaWxsaXNlY29u
ZHMsIFdURjo6VGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKICAgICBkb3VibGUgZGF5ID0gZGF0
ZVRvRGF5c0Zyb20xOTcwKHQueWVhcigpLCB0Lm1vbnRoKCksIHQubW9udGhEYXkoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
NzRmZjM2ZDZiOWYyYjkxNjM0Nzc3MGNlZWUyOTFlODhiN2IzYTllYy4uN2VjOGRjNmU5MGIyZmJl
MTRlMDAxOGFmMTk0YmIzYWU4ODJmNGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjEwLDYgKzIxMCw4IEBACiAjaW5jbHVk
ZSAiVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRp
b24uaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCkBAIC0xMjU0LDYg
KzEyNTYsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0
LnNldChUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBkdXJhdGlvblByb3RvdHlwZSkpOwogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9p
bnN0YW50U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSA9
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRl
bXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgaW5z
dGFudFByb3RvdHlwZSkpOworICAgICAgICAgICAgfSk7CisKICAgICAgICAgbV9wbGFpblRpbWVT
dHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0
cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTIxNTcsNiArMjE2Niw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlz
aXRvciYgdmlzaXRvcikKIAogICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9kdXJhdGlvblN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2luc3RhbnRTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9wbGFpblRpbWVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXgg
OTRlMTJhMjNiYmFiMjUzNTk2NzZkMGIxOWNiZjI3ZWI0MjgzYmRkNC4uOTBiZWE2N2NkMDg1Yjcz
YmYxZGRkOGRlZmMwZTlhYmRiOTQzNWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zMzQsNiArMzM0LDcgQEAgcHVibGljOgogCiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsZW5kYXJTdHJ1
Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZHVy
YXRpb25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1faW5zdGFudFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9wbGFpblRpbWVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fdGltZVpvbmVTdHJ1Y3R1cmU7CiAKQEAgLTg5Miw2ICs4
OTMsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9jYWxlbmRhclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGR1
cmF0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGluc3RhbnRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2luc3RhbnRT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbGFpblRpbWVTdHJ1Y3R1cmUo
KSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1
cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1lWm9uZVN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uLmNwcAppbmRleCA5MzRiZWIwOWE3MGI3NmZmYTJlYzg5MzVjYTg3OGQyMGZjODlm
NjZmLi4yOWIzNTQ2NmQ5OGVmZjlmNjRmZDA5NzlkYzkwMDc0MWJkZmE3YTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTY0LDYgKzE2NSwzMSBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0b1Rl
bXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBUZW1w
b3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUo
KSwgV1RGTW92ZShyZXN1bHQpKTsKIH0KIAorLy8gVG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbiAo
IHRlbXBvcmFsRHVyYXRpb25MaWtlLCBkaXNhbGxvd2VkRmllbGRzICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvbGltaXRlZHRlbXBvcmFsZHVy
YXRpb24KK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gdG9JU084
NjAxRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihkdXJhdGlvbikp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50IHNp
Z24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGZvciAoVGVtcG9yYWxV
bml0IHVuaXQgOiBkaXNhbGxvd2VkVW5pdHMpIHsKKyAgICAgICAgaWYgKGR1cmF0aW9uW3VuaXRd
KSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFr
ZVN0cmluZygiQWRkaW5nICJfcywgdGVtcG9yYWxVbml0UGx1cmFsUHJvcGVydHlOYW1lKHZtLCB1
bml0KS5wdWJsaWNOYW1lKCksICIgbm90IHN1cHBvcnRlZCBieSBUZW1wb3JhbC5JbnN0YW50LiBU
cnkgVGVtcG9yYWwuWm9uZWREYXRlVGltZSBpbnN0ZWFkIl9zKSk7CisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCiBU
ZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uaAppbmRleCA4MmYyZDVkNjVjMjJhYzRjNDA3Yzg2MzQzNDJmZjY2OWNhMGExODk2
Li5kMjc3MjA5Y2RkZDc3NWIxMTVkMTdkMWUxY2VmYzE0Mjc3ZDQ4MDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCkBAIC00Niw2ICs0
Niw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKICAgICBzdGF0aWMgVGVtcG9yYWxE
dXJhdGlvbiogdG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7Cisg
ICAgc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvTGltaXRlZER1cmF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxs
b3dlZFVuaXRzKTsKICAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvbiogZnJvbShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlOTgxODViMmYyZjQ3OWM2
YjMwNDNlNGQ4N2E0ZTRmYmQxZjRhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKQEAgLTAsMCArMSw0NTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCisjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNp
bmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnQ6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50KSB9OworCitTdHJ1Y3R1cmUqIFRlbXBvcmFs
SW5zdGFudDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFu
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RU
aW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9leGFjdFRpbWUoZXhhY3RU
aW1lKQoreworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUp
Cit7CisgICAgQVNTRVJUKGV4YWN0VGltZS5pc1ZhbGlkKCkpOworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0uaGVhcCkpIFRl
bXBvcmFsSW5zdGFudCh2bSwgc3RydWN0dXJlLCBleGFjdFRpbWUpOworICAgIG9iamVjdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKKy8vIENyZWF0ZVRlbXBv
cmFsSW5zdGFudCAoIGVwb2NoTmFub3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFs
aW5zdGFudAorVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFs
aWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0
VGltZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmICghZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhleGFjdFRpbWUuYXNTdHJpbmcoKSwgIiBlcG9j
aCBuYW5vc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwu
SW5zdGFudCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1
cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmplY3QtPmluc3Rh
bnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3Jh
bEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTVmFsdWUgZXBvY2hOYW5vc2Vjb25kcyA9IHZhbHVlLnRvQmlnSW50KGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGVwb2NoTmFub3NlY29uZHMuaXNCaWdJbnQzMigpKSB7
CisgICAgICAgIGludDMyX3QgdG90YWwgPSBlcG9jaE5hbm9zZWNvbmRzLmJpZ0ludDMyQXNJbnQz
MigpOworICAgICAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsgdG90YWwgfTsKKyAg
ICAgICAgQVNTRVJUKGV4YWN0VGltZS5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gY3JlYXRl
KHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1
cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisjZW5kaWYKKworICAgIEpTQmlnSW50KiBiaWdpbnQg
PSBhc0hlYXBCaWdJbnQoZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgYm9vbCBiaWdJbnRUb29Mb25n
ID0gZmFsc2U7CisgICAgSW50MTI4IHRvdGFsOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKEpT
QmlnSW50OjpEaWdpdCkgPT0gNCkgeworICAgICAgICBJbnQxMjggZDAgeyBiaWdpbnQtPmxlbmd0
aCgpID4gMCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwIH07CisgICAgICAgIEludDEyOCBkMSB7IGJp
Z2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAgICAgSW50
MTI4IGQyIHsgYmlnaW50LT5sZW5ndGgoKSA+IDIgPyBiaWdpbnQtPmRpZ2l0KDIpIDogMCB9Owor
ICAgICAgICB0b3RhbCA9IGQyIDw8IDY0IHwgZDEgPDwgMzIgfCBkMDsKKyAgICAgICAgYmlnSW50
VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAzOworICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA4KTsKKyAgICAgICAgSW50MTI4IGxvdyB7
IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAgICAgICAg
SW50MTI4IGhpZ2ggeyBiaWdpbnQtPmxlbmd0aCgpID4gMSA/IGJpZ2ludC0+ZGlnaXQoMSkgOiAw
IH07CisgICAgICAgIHRvdGFsID0gaGlnaCA8PCA2NCB8IGxvdzsKKyAgICAgICAgYmlnSW50VG9v
TG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworICAgIH0KKyAgICBJU084NjAxOjpFeGFjdFRp
bWUgZXhhY3RUaW1lIHsgdG90YWwgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6IDEpIH07CisKKyAg
ICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICBT
dHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOwor
ICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVy
IG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBv
Y2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1w
b3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+
aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1RlbXBvcmFsSW5zdGFu
dCAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtdG90ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50
Ojp0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8
VGVtcG9yYWxJbnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4oaXRlbVZhbHVlKTsKKworICAgIC8vIEZJWE1FOiB3aGVuIFRlbXBvcmFsLlpvbmVkRGF0
ZVRpbWUgbGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsWm9uZWRE
YXRlVGltZT4odm0pKQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFpvbmVk
RGF0ZVRpbWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBTdHJpbmcgc3RyaW5n
ID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEV4YWN0VGltZSA9IElT
Tzg2MDE6OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2VkRXhhY3RUaW1lKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5n
KCInIl9zLCBlbGxpcHNpemVBdCgxMDAsIHN0cmluZyksICInIGlzIG5vdCBhIHZhbGlkIFRlbXBv
cmFsLkluc3RhbnQgc3RyaW5nIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxP
YmplY3QsIHBhcnNlZEV4YWN0VGltZS52YWx1ZSgpKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFu
dDo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoaXRlbVZhbHVl
LmluaGVyaXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKSB7CisgICAgICAgIElTTzg2MDE6OkV4YWN0
VGltZSBleGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRlbVZhbHVlKS0+ZXhh
Y3RUaW1lKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorCisgICAg
cmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7Cit9CisKKy8vIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVwb2NoU2Vjb25kcyApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9j
aHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNv
bmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hTZWNvbmRzVmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaFNlY29uZHMgPSBl
cG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVtYmVyVG9CaWdJbnQgc3RlcCAx
CisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRzKSkgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaFNlY29uZHMsICIgaXMg
bm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggc2Vjb25kcyJfcykpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RU
aW1lID0gSVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hTZWNvbmRzKGVwb2NoU2Vjb25kcyk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWls
bGlzZWNvbmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWxsaXNlY29uZHMK
K1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNlY29uZHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pbGxpc2Vjb25kc1Zh
bHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgZXBvY2hNaWxsaXNlY29u
ZHMgPSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJUb0Jp
Z0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vjb25kcykpIHsKKyAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZXBv
Y2hNaWxsaXNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2gg
bWlsbGlzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pbGxpc2Vjb25kcyhlcG9jaE1pbGxpc2Vjb25kcyk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9
CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzICggZXBvY2hNaWNy
b3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWNyb3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzID0gZXBvY2hNaWNyb3NlY29u
ZHNWYWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChlcG9jaE1pY3Jv
c2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBtaWNyb3NlY29uZHMgPSBl
cG9jaE1pY3Jvc2Vjb25kcy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgYXV0byBleGFjdFRp
bWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29u
ZHMpOworICAgICAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVy
biBjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUp
OworICAgIH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChl
cG9jaE1pY3Jvc2Vjb25kcyk7CisgICAgYm9vbCBiaWdJbnRUb29Mb25nOworICAgIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gNCkKKyAgICAgICAgYmlnSW50VG9vTG9u
ZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoc2l6
ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gOCk7CisgICAgICAgIGJpZ0ludFRvb0xvbmcgPSBiaWdp
bnQtPmxlbmd0aCgpID4gMTsKKyAgICB9CisgICAgaW50NjRfdCBtaWNyb3NlY29uZHMgPSBKU0Jp
Z0ludDo6dG9CaWdJbnQ2NChiaWdpbnQpOworICAgIGF1dG8gZXhhY3RUaW1lID0gSVNPODYwMTo6
RXhhY3RUaW1lOjpmcm9tRXBvY2hNaWNyb3NlY29uZHMobWljcm9zZWNvbmRzKTsKKworICAgIGlm
IChiaWdJbnRUb29Mb25nIHx8ICFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmlu
ZyBhcmdBc1N0cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CisgICAg
ICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2Yi
X3M7CisgICAgICAgIH0KKworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgbWFrZVN0cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBt
aWNyb3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLklu
c3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJu
IGNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7
Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMgKCBlcG9jaE5h
bm9zZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLmluc3RhbnQuZnJvbWVwb2NobmFub3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVt
cG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGVwb2NoTmFub3NlY29uZHNWYWx1ZSkKK3sKKyAgICByZXR1cm4gdHJ5
Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGVwb2NoTmFub3NlY29uZHNWYWx1ZSk7Cit9CisK
Ky8vIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSAoIG9uZSwgdHdvICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuY29tcGFyZQorSlNW
YWx1ZSBUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBvbmVWYWx1ZSwgSlNWYWx1ZSB0d29WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvbmUgPSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0
LCBvbmVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IFRlbXBvcmFsSW5zdGFudCogdHdvID0gdG9JbnN0YW50KGdsb2JhbE9iamVjdCwgdHdvVmFsdWUp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAob25lLT5l
eGFjdFRpbWUoKSA+IHR3by0+ZXhhY3RUaW1lKCkpCisgICAgICAgIHJldHVybiBqc051bWJlcigx
KTsKKyAgICBpZiAob25lLT5leGFjdFRpbWUoKSA8IHR3by0+ZXhhY3RUaW1lKCkpCisgICAgICAg
IHJldHVybiBqc051bWJlcigtMSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKDApOworfQorCitJU084
NjAxOjpEdXJhdGlvbiBUZW1wb3JhbEluc3RhbnQ6OmRpZmZlcmVuY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVtcG9yYWxJbnN0YW50KiBvdGhlciwgSlNWYWx1ZSBvcHRpb25zVmFs
dWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25z
ID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNtYWxsZXN0ID0g
dGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0pOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0
VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCk7CisKKyAg
ICBUZW1wb3JhbFVuaXQgZGVmYXVsdExhcmdlc3RVbml0ID0gc3RkOjptaW4oc21hbGxlc3RVbml0
LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCk7CisgICAgYXV0byBsYXJnZXN0ID0gdGVtcG9yYWxMYXJn
ZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSwgZGVmYXVsdExhcmdlc3RVbml0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBs
YXJnZXN0VW5pdCA9IGxhcmdlc3QudmFsdWVfb3IoZGVmYXVsdExhcmdlc3RVbml0KTsKKworICAg
IGlmIChzbWFsbGVzdCAmJiBsYXJnZXN0ICYmIHNtYWxsZXN0IDwgbGFyZ2VzdCkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0
IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRpbmdN
b2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtYXhJbmNyZW1lbnQgPSBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0KTsK
KyAgICBBU1NFUlQobWF4SW5jcmVtZW50ICYmICptYXhJbmNyZW1lbnQgPD0gMTAwMCk7IC8vIHVu
Ym91bmRlZCBpbmNyZW1lbnRzIGFyZSBpbXBvc3NpYmxlIHdpdGggVGVtcG9yYWwuSW5zdGFudAor
ICAgIHVuc2lnbmVkIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBtYXhJbmNyZW1lbnQsIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSW50MTI4IHJvdW5kZWREaWZmID0gZXhhY3RUaW1l
KCkuZGlmZmVyZW5jZShvdGhlci0+ZXhhY3RUaW1lKCksIGluY3JlbWVudCwgc21hbGxlc3RVbml0
LCByb3VuZGluZ01vZGUpOworICAgIC8vIE5PVEU6IER1cmF0aW9uIGZpZWxkcyBhcmUgY3VycmVu
dGx5IGRvdWJsZXMsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mCisgICAgLy8gbmFub3NlY29uZHMg
bWF5IG5vdCBmaXQgaW4gYSBkb3VibGUuIFRoaXMgbWF5IG5lZWQgdG8gY2hhbmdlIGlmIHRoZQor
ICAgIC8vIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIER1cmF0aW9uIGNoYW5nZXMuCisgICAg
QVNTRVJUKHJvdW5kZWREaWZmIC8gMScwMDAnMDAwJzAwMCA8IElOVDY0X01BWCk7CisgICAgZG91
YmxlIHNlY29uZHMgeyBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJv
dW5kZWREaWZmIC8gMScwMDAnMDAwJzAwMCkpIH07CisgICAgZG91YmxlIG5hbm9zZWNvbmRzUmVt
YWluZGVyIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2NF90Pihyb3VuZGVk
RGlmZiAlIDEnMDAwJzAwMCcwMDApKSB9OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3VsdCB7
IDAsIDAsIDAsIDAsIDAsIDAsIHNlY29uZHMsIDAsIDAsIG5hbm9zZWNvbmRzUmVtYWluZGVyIH07
CisKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBkb3VibGUgbWF4aW11bUluY3JlbWVudChU
ZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0KQoreworICAgIHN3aXRjaCAoc21hbGxlc3RVbml0KSB7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IHJldHVybiAyNDsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TWludXRlOiByZXR1cm4gMTQ0MDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vj
b25kOiByZXR1cm4gODY0MDA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiBy
ZXR1cm4gOC42NGU3OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDogcmV0dXJu
IDguNjRlMTA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHJldHVybiA4LjY0
ZTEzOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpZZWFyOgorICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpNb250aDoKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6V2VlazoKKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6RGF5OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHsgfQorICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitJU084NjAxOjpFeGFjdFRpbWUgVGVtcG9yYWxJ
bnN0YW50Ojpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlv
bnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9w
dGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxl
c3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9y
YWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRl
bXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBpZiAoIXNtYWxsZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3B0aW9u
Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVtcG9yYWxVbml0IHNtYWxs
ZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCk7CisK
KyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgaW5jcmVtZW50ID0gdGVt
cG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1JbmNy
ZW1lbnQoc21hbGxlc3RVbml0KSwgdHJ1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBleGFjdFRpbWUoKS5yb3VuZChpbmNyZW1lbnQsIHNtYWxs
ZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5
cGUudG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQucHJvdG90eXBlLnRvc3RyaW5nCitTdHJpbmcg
VGVtcG9yYWxJbnN0YW50Ojp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
SlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9w
dGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBKU09iamVj
dCogdGltZVpvbmUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdGltZVpvbmVWYWx1ZSA9IG9wdGlv
bnMtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRpbWVab25lKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghdGltZVpvbmVWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHRpbWVab25lID0gVGVtcG9yYWxUaW1lWm9uZTo6ZnJv
bShnbG9iYWxPYmplY3QsIHRpbWVab25lVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29u
ZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9
IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2Rl
OjpUcnVuYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8v
IE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBk
ZWZhdWx0cy4KKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFByZWNpc2lv
bjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAgICAgICAg
cmV0dXJuIHRvU3RyaW5nKHRpbWVab25lKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdF
eGFjdFRpbWUgeyBleGFjdFRpbWUoKS5yb3VuZChkYXRhLmluY3JlbWVudCwgZGF0YS51bml0LCBy
b3VuZGluZ01vZGUpIH07CisKKyAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVzIG9uIFRpbWVa
b25lOgorICAgIC8vIDEuIExldCByb3VuZGVkSW5zdGFudCBiZSAhIENyZWF0ZVRlbXBvcmFsSW5z
dGFudChyb3VuZGVkTnMpLgorICAgIC8vIC4uLgorICAgIC8vIDEuIElmIF9vdXRwdXRUaW1lWm9u
ZV8gaXMgKnVuZGVmaW5lZCosIHRoZW4KKyAgICAvLyAgIDEuIFNldCBfb3V0cHV0VGltZVpvbmVf
IHRvICEgQ3JlYXRlVGVtcG9yYWxUaW1lWm9uZSgqIlVUQyIqKS4KKyAgICAvLyAxLiBMZXQgX2lz
b0NhbGVuZGFyXyBiZSAhIEdldElTTzg2MDFDYWxlbmRhcigpLgorICAgIC8vIDEuIExldCBfZGF0
ZVRpbWVfIGJlID8gQnVpbHRpblRpbWVab25lR2V0UGxhaW5EYXRlVGltZUZvcihfb3V0cHV0VGlt
ZVpvbmVfLCBfaW5zdGFudF8sIF9pc29DYWxlbmRhcl8pLgorICAgIEpTT2JqZWN0KiBvdXRwdXRU
aW1lWm9uZSA9IHRpbWVab25lOworICAgIGlmIChvdXRwdXRUaW1lWm9uZSkgeworICAgICAgICB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiBUZW1wb3JhbC5JbnN0YW50
LnRvU3RyaW5nKHt0aW1lWm9uZX0pIG5vdCBpbXBsZW1lbnRlZCB5ZXQiX3MpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiB0b1N0cmluZyhuZXdFeGFjdFRpbWUsIHRp
bWVab25lLCBkYXRhKTsKK30KKworLy8gVGVtcG9yYWxJbnN0YW50VG9TdHJpbmcgKCBpbnN0YW50
LCB0aW1lWm9uZSwgcHJlY2lzaW9uICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsaW5zdGFudHRvc3RyaW5nCitTdHJpbmcgVGVtcG9y
YWxJbnN0YW50Ojp0b1N0cmluZyhJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBKU09iamVj
dCogdGltZVpvbmUsIFByZWNpc2lvbkRhdGEgcHJlY2lzaW9uKQoreworICAgIEdyZWdvcmlhbkRh
dGVUaW1lIGdyZWdvcmlhbkRhdGVUaW1lIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihleGFjdFRpbWUu
ZXBvY2hNaWxsaXNlY29uZHMoKSksIExvY2FsVGltZU9mZnNldCB7IH0gfTsKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisKKyAgICAvLyBJZiB0aGUgeWVhciBpcyBvdXRzaWRlIHRoZSBib3Vu
ZHMgb2YgMTAwMCBhbmQgOTk5OSBpbmNsdXNpdmUgd2Ugd2FudCB0bworICAgIC8vIHVzZSB0aGUg
ZXh0ZW5kZWQgeWVhciBmb3JtYXQgKFBhZElTT1llYXIpLgorICAgIHVuc2lnbmVkIHllYXJMZW5n
dGggPSA0OworICAgIGlmIChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPiA5OTk5IHx8IGdyZWdv
cmlhbkRhdGVUaW1lLnllYXIoKSA8IDEwMDApIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZ3Jl
Z29yaWFuRGF0ZVRpbWUueWVhcigpIDwgMCA/ICctJyA6ICcrJyk7CisgICAgICAgIHllYXJMZW5n
dGggPSA2OworICAgIH0KKworICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocGFkKCcwJywg
eWVhckxlbmd0aCwgc3RkOjphYnMoZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpKSksCisgICAgICAg
ICctJywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGgoKSArIDEpLAorICAgICAg
ICAnLScsIHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoRGF5KCkpLAorICAgICAg
ICAnVCcsIHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLmhvdXIoKSksCisgICAgICAgICc6
JywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubWludXRlKCkpKSk7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIGludCBuc1BlclNlY29uZCB7IDEnMDAwJzAwMCcwMDAgfTsKKyAgICBpbnQg
ZnJhY3Rpb24geyBleGFjdFRpbWUubmFub3NlY29uZHNGcmFjdGlvbigpIH07CisgICAgaWYgKGZy
YWN0aW9uIDwgMCkKKyAgICAgICAgZnJhY3Rpb24gKz0gbnNQZXJTZWNvbmQ7CisKKyAgICBmb3Jt
YXRTZWNvbmRzU3RyaW5nUGFydChidWlsZGVyLCBncmVnb3JpYW5EYXRlVGltZS5zZWNvbmQoKSwg
ZnJhY3Rpb24sIHByZWNpc2lvbik7CisKKyAgICBpZiAodGltZVpvbmUpIHsKKyAgICAgICAgLy8g
RklYTUU6IE1pc3NpbmcsIHJlbGllcyBvbiBUaW1lWm9uZToKKyAgICAgICAgLy8gICAxLiBMZXQg
X3RpbWVab25lU3RyaW5nXyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldE9mZnNldFN0cmluZ0Zvcihf
dGltZVpvbmVfLCBfaW5zdGFudF8pLgorICAgICAgICBidWlsZGVyLmFwcGVuZCgnWicpOworICAg
IH0gZWxzZQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnWicpOworCisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZGZhMmY5
OGYwOTM3YzdlZmEzYWQ0MDU2YzM5YmExMjZhMzlhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAg
IHJldHVybiB2bS50ZW1wb3JhbEluc3RhbnRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0
YXRpYyBUZW1wb3JhbEluc3RhbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OkV4
YWN0VGltZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChK
U0dsb2JhbE9iamVjdCosIElTTzg2MDE6OkV4YWN0VGltZSwgU3RydWN0dXJlKiA9IG51bGxwdHIp
OworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRvSW5zdGFu
dChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQq
IGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50KiBmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3Rh
dGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWljcm9z
ZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5z
dGFudCogZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAg
ICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1
ZSk7CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9leGFjdFRpbWUuZ2V0KCk7IH0KKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGRpZmZlcmVuY2Uo
SlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbEluc3RhbnQqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0
OworICAgIElTTzg2MDE6OkV4YWN0VGltZSByb3VuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
b3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNPYmplY3QqIHRpbWVa
b25lID0gbnVsbHB0ciwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24gPSB7IHsgUHJlY2lzaW9uOjpB
dXRvLCAwIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9KSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRvU3RyaW5nKGV4YWN0VGltZSgpLCB0aW1lWm9uZSwgcHJlY2lzaW9uKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxJbnN0YW50KFZNJiwgU3RydWN0dXJlKiwg
SVNPODYwMTo6RXhhY3RUaW1lKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBwYXJzZShT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAgc3RhdGljIElTTzg2MDE6
OkV4YWN0VGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKworICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoSVNPODYwMTo6RXhhY3RUaW1lLCBKU09iamVjdCogdGlt
ZVpvbmUsIFByZWNpc2lvbkRhdGEpOworCisgICAgUGFja2VkPElTTzg2MDE6OkV4YWN0VGltZT4g
bV9leGFjdFRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYWE0MjgwYTFjZTY3MDkwYTY3ODEzYzIxODY1YjJjNWUzZWViNjVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VS
VF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKTsK
Kworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9j
aE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bUVwb2NoTmFub3NlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSk7CisKK30KKworI2luY2x1ZGUgIlRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKSB9
OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oCitAYmVn
aW4gdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JUYWJsZQorICBmcm9tICAgICAgICAgICAgICAg
ICAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hTZWNvbmRzICAgICAgIHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICBmcm9tRXBvY2hNaWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
RnVuY0Zyb21FcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBv
Y2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1p
Y3Jvc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hOYW5vc2Vjb25kcyAg
IHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICBjb21wYXJlICAgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IqIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIGF1dG8qIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJl
KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGluc3RhbnRQcm90b3R5cGUp
OworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5j
dGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsSW5zdGFudCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpOworCitUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBvcmFs
SW5zdGFudCwgY29uc3RydWN0VGVtcG9yYWxJbnN0YW50KQoreworfQorCit2b2lkIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSwgMSwgIkluc3RhbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgaW5zdGFudFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIGluc3RhbnRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZy
YW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RF
UklWRURfU1RSVUNUVVJFKHZtLCBpbnN0YW50U3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNaXNzaW5nIHJlcXVpcmVkIGVw
b2NoTmFub3NlY29uZHMgYXJndW1lbnQgdG8gVGVtcG9yYWwuSW5zdGFudCJfcyk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLCBzdHJ1Y3R1cmUpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxs
VGVtcG9yYWxJbnN0YW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW5zdGFudCIpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNlY29u
ZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hN
aWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODdkOWRlMzIwMWIyYzgz
YWYzZGVkZTJhMjE4OTVhOGYyZjY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTsKKworY2xhc3MgVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKK307CitTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvciwg
SW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWQ5OGNhYmIyMDA1NDViZDQ3YTU0MjJlYzhhOGVlZjVmZjIzMzBmZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSVNPODYwMS5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNBZGQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1Jv
dW5kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNFcXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04pOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1Rv
TG9jYWxlU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25kcyk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0
ZXJFcG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaE5hbm9zZWNvbmRzKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuSW5zdGFudCIsICZCYXNlOjpz
X2luZm8sICZpbnN0YW50UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGluc3RhbnRQcm90b3R5cGVUYWJsZQorICBh
ZGQgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCAgICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3QgICAgICAgICAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHVudGlsICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VW50aWwgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5jZSAgICAgICAg
ICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGVx
dWFscyAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgICAgdGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKKyAgdG9KU09OICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNU
b0pTT04gICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvTG9jYWxlU3RyaW5n
ICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgZXBv
Y2hTZWNvbmRzICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25k
cyAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE1pbGxpc2Vj
b25kcyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWljcm9zZWNvbmRzICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hOYW5vc2Vjb25kcyAgIHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
eworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJ
VEhPVVRfVFJBTlNJVElPTigpOworfQorCitzdGF0aWMgY29uc3RleHByIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzID0geworICAgIFRl
bXBvcmFsVW5pdDo6WWVhciwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1vbnRoLAorICAgIFRlbXBvcmFs
VW5pdDo6V2VlaywKKyAgICBUZW1wb3JhbFVuaXQ6OkRheSwKK307CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWlu
c3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0g
VGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhh
Y3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoZHVyYXRpb24p
OworICAgIGlmICghbmV3RXhhY3RUaW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2Ug
Zm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5z
dGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsICpuZXdFeGFjdFRpbWUpKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
U3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5z
dGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnN1
YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBJ
U084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1
cmF0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgZGlzYWxsb3dlZEFk
ZGl0aW9uVW5pdHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RUaW1lID0gaW5zdGFu
dC0+ZXhhY3RUaW1lKCkuYWRkKC1kdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTdWJ0cmFjdGlv
biBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGds
b2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3Jh
bEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIG9w
dGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJl
c3VsdCA9IGluc3RhbnQtPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBvdGhlciwgb3B0aW9ucyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmR1
cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zaW5jZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9
IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpT
VmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVy
YXRpb24gcmVzdWx0ID0gb3RoZXItPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LCBv
cHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFyZ3Vt
ZW50Il9zKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0YW50
LT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgbmV3RXhhY3RU
aW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKwor
ICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihpbnN0YW50LT5leGFjdFRpbWUoKSA9PSBvdGhlci0+ZXhhY3RUaW1lKCkpKTsKK30KKworLy8g
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQucHJv
dG90eXBlLnRvc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3Jh
bEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50
LnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQi
X3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3Jh
bEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50
LnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCBpbnN0YW50LT50b1N0cmluZygpKSkpOworfQorCisvLyBGSVhNRTogSXMgdGhpcyBi
ZXR0ZXIgYXMgYSBKU0J1aWx0aW4/CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXR0
ZXIgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgZm9ybWF0dGVyLT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gRklYTUU6IGNoYW5nZSBJ
bnRsRGF0ZVRpbWVGb3JtYXQgdG8gdXNlIGVwb2NoTmFub3NlY29uZHMKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXR0ZXItPmZvcm1hdChnbG9iYWxP
YmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKSk7Cit9CisK
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFs
dWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBi
ZSBjYWxsZWQuIFRvIGNvbXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0YW50
LmNvbXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hTZWNvbmRzIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoU2Vjb25kcygp
KSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
ICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTWlsbGlzZWNvbmRzIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNv
bmRzKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWNyb3NlY29u
ZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJp
Z0ludE9yQmlnSW50MzIoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE1p
Y3Jvc2Vjb25kcygpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTmFu
b3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpjcmVh
dGVGcm9tKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hOYW5vc2Vjb25k
cygpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjhkZGZiMTQ2OTg5NzhiOGMwN2UxOGIyMGVjOTNkMzkyZDc5ODM5MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUs
IEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisg
ICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBmZjBiY2ZkY2Y4
MmQyMjFkMWVjYjg1YThjMWI0NmI2NTFiNGRiNzM1Li44OTQ2YTBjYzYxMDQ4NGY4ODI0ZjVjZmRl
N2NmNGI3Mzk4NWM5ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgiCisjaW5jbHVkZSA8d3RmL0ludDEyOC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAtNjUsNiArNjgsMTMgQEAgc3RhdGljIEpT
VmFsdWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
CiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlSW5zdGFudENv
bnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9iamVj
dCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCktPnN0
b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWlu
VGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1wb3Jh
bE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3Qp
OwpAQCAtODksNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEBiZWdpbiB0ZW1wb3JhbE9iamVj
dFRhYmxlCiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAgICAg
RG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlv
bkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgSW5zdGFudCAg
ICAgICAgY3JlYXRlSW5zdGFudENvbnN0cnVjdG9yICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNh
bGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAg
RG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFpblRp
bWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpvbmUg
ICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNh
bGxiYWNrCkBAIC0zNzQsNiArMzg1LDE3IEBAIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0
aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6CiAgICAg
fQogfQogCisvLyBGb3JtYXRTZWNvbmRzU3RyaW5nUGFydCAoIHNlY29uZCwgbWlsbGlzZWNvbmQs
IG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0c2Vjb25kc3N0cmluZ3BhcnQK
K3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgc2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24p
Cit7CisgICAgaWYgKHByZWNpc2lvbi51bml0ID09IFRlbXBvcmFsVW5pdDo6TWludXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBidWlsZGVyLmFwcGVuZCgnOicsIHBhZCgnMCcsIDIsIHNlY29u
ZCkpOworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlvbiwg
cHJlY2lzaW9uLnByZWNpc2lvbik7Cit9CisKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9uUm91
bmRpbmdJbmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3JhbGR1cmF0aW9ucm91bmRpbmdpbmNyZW1l
bnQKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9y
YWxVbml0IHVuaXQpCkBAIC00MzUsNiArNDU3LDQzIEBAIGRvdWJsZSByb3VuZE51bWJlclRvSW5j
cmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUgbW9kZSkKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgSW50MTI4IGFicyhJ
bnQxMjggeCkKK3sKKyAgICByZXR1cm4geCA8IDAgPyAteCA6IHg7Cit9CisKKy8vIFNhbWUgYXMg
YWJvdmUsIGJ1dCB3aXRoIEludDEyOAorSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50
MTI4IHgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQoreworICAgIGlmIChp
bmNyZW1lbnQgPT0gMSkKKyAgICAgICAgcmV0dXJuIHg7CisKKyAgICBJbnQxMjggcXVvdGllbnQg
PSB4IC8gaW5jcmVtZW50OworICAgIEludDEyOCByZW1haW5kZXIgPSB4ICUgaW5jcmVtZW50Owor
ICAgIGlmICghcmVtYWluZGVyKQorICAgICAgICByZXR1cm4geDsKKworICAgIGJvb2wgc2lnbiA9
IHJlbWFpbmRlciA8IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01v
ZGU6OkNlaWw6CisgICAgICAgIGlmICghc2lnbikKKyAgICAgICAgICAgIHF1b3RpZW50Kys7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAgaWYg
KHNpZ24pCisgICAgICAgICAgICBxdW90aWVudC0tOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpIYWxmRXhwYW5kOgorICAgICAgICAvLyAiaGFsZiB1cCBhd2F5IGZyb20gemVybyIKKyAg
ICAgICAgaWYgKGFicyhyZW1haW5kZXIgKiAyKSA+PSBpbmNyZW1lbnQpCisgICAgICAgICAgICBx
dW90aWVudCArPSBzaWduID8gLTEgOiAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
dXJuIHF1b3RpZW50ICogaW5jcmVtZW50OworfQorCiBUZW1wb3JhbE92ZXJmbG93IHRvVGVtcG9y
YWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9u
cykKIHsKICAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1wb3JhbE92ZXJmbG93PihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5vdmVyZmxvdywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4
IDc5MTU3OThjZGI5OGFiNzQ1ODNiOGM4YWMzNmE1NWQxYjQ1ZjFjMTQuLmFiM2IyOTMzZjUzYThj
YTZkNjYxZDI2ZjZkNzE5Yjc3OWMyZDY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEwNSw5ICsxMDYsMTEgQEAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdGVtcG9yYWxGcmFjdGlvbmFsU2Vjb25kRGlnaXRzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QKIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFJvdW5kaW5nTW9kZSB0ZW1wb3JhbFJvdW5kaW5n
TW9kZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUm91bmRpbmdNb2RlKTsKIHZvaWQgZm9y
bWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBmcmFjdGlv
biwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPik7Cit2b2lkIGZvcm1hdFNlY29uZHNT
dHJpbmdQYXJ0KFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIGZyYWN0
aW9uLCBQcmVjaXNpb25EYXRhKTsKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRp
bmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVt
ZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBkaXZpZGVuZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNy
ZW1lbnQoZG91YmxlLCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUpOworSW50MTI4IHJv
dW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4LCBJbnQxMjggaW5jcmVtZW50LCBSb3VuZGluZ01v
ZGUpOwogCiBlbnVtIGNsYXNzIFRlbXBvcmFsT3ZlcmZsb3cgOiBib29sIHsKICAgICBDb25zdHJh
aW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMmZhYzczNDM1NDg5ZWI3
MGQ0ZDk2ZThkMjliMzRiZDNiNjhkYjhjZi4uOWNmNWZlYTAxOTg0OWRiNmU2NjA5MTBiYjk0NTFj
ZDI3YzI1ZmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY3LDYg
KzE2Nyw3IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxD
YWxlbmRhci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1w
b3JhbEluc3RhbnQuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKQEAgLTE1
OTcsNiArMTU5OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
eW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2Fs
ZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxDYWxlbmRhcikKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsSW5zdGFudCkKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJy
YXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiZGY0MzFlODRlZjA5NDg1NmJj
MDI3MzBjNDBmZmU2ZWRhYTVjMWQ2Li42ZmU0Njc0MDViYmI0NzRlYzIyM2Q2OWI0ODFiMThkNmYw
YWQzZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE4Nyw2ICsxODcsNyBA
QCBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKIGNsYXNzIFN5bWJvbDsKIGNsYXNzIFRlbXBvcmFsRHVy
YXRpb247CitjbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFycmF5Q29udHJvbGxl
cjsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
OwpAQCAtNjAxLDYgKzYwMiw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQogICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxJbnN0YW50U3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBsYWlu
VGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dWludDhBcnJheVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZWZhYjRh
ZDNiYzlmNzBkNjdlYjYyM2QwNzMxNjEwOTI5OThkM2UzNC4uOWMxYTVmYzc0MjQxODVkZDI5N2Ew
MWJlZGJmY2EwMmNiZWYxOTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0y
OTEsMTIgKzI5MSwxOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5
cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VO
VVNFRF9SRVRVUk4KICAgICB7CiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0gICAgICAg
IFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGhz
LCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0
ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorI2lmICFIQVZFKElOVDEyOF9U
KQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkg
fHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAg
ICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxv
dyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFW
RShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKHNpZ25z
TWF0Y2gobGhzLCByaHMpKSB7CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAg
ICAgICAgICBpZiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC0gcmhz
KSA8IGxocykKQEAgLTMwOSwxOCArMzE1LDIzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5
cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAg
ICAgICAgIH0gLy8gaWYgdGhlIHNpZ25zIGRvIG5vdCBtYXRjaCB0aGlzIG9wZXJhdGlvbiBjYW4n
dCBvdmVyZmxvdwogICAgICAgICByZXN1bHQgPSBsaHMgKyByaHM7CiAgICAgICAgIHJldHVybiB0
cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIHN1YihMSFMgbGhz
LCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsK
ICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwot
ICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbHNlCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBz
aXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsK
KyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVt
cDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAg
ICB9CisjZW5kaWYKKyNlbmRpZgogICAgICAgICBpZiAoIXNpZ25zTWF0Y2gobGhzLCByaHMpKSB7
CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAobGhzID4g
c3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgKyByaHMpCkBAIC0zMzIsMTgg
KzM0MywyNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1l
IFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9IC8vIGlmIHRoZSBz
aWducyBtYXRjaCB0aGlzIG9wZXJhdGlvbiBjYW4ndCBvdmVyZmxvdwogICAgICAgICByZXN1bHQg
PSBsaHMgLSByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAg
c3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUm
IHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVTRShNVUxfT1ZFUkZMT1cp
Ci0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxfb3Zl
cmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorICAgICAgICAv
LyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gaWYgdGhlIGludDEyOCB0eXBlIGlzIFdURjo6W1VdSW50
MTI4SW1wbC4KKyAgICAgICAgLy8gQWxzbyBkb24ndCB1c2UgdGhlIGJ1aWx0aW4gZm9yIF9fW3Vd
aW50MTI4X3Qgb24gQ2xhbmcvTGludXguCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MubGx2
bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisjaWYgIUhBVkUoSU5UMTI4X1QpIHx8IChDT01Q
SUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihM
SFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90
KSkgeworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBp
ZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5HKSAm
JiBPUyhMSU5VWCkpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAgICAgICAgIGlmIChzaWdu
c01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGxocyAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4
KCkgLyBsaHMpIDwgcmhzKQpAQCAtMzY1LDcgKzM4NCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
SFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNP
cGVyCiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gbGhzICogcmhzOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBkaXZpZGUo
TEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4K
QEAgLTM4NSw0NyArNDAzLDY2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJI
UywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgLy8gTEhT
IGFuZCBSSFMgYXJlIHVuc2lnbmVkIHR5cGVzIHNvIGJvdW5kcyBjaGVja3MgYXJlIG5pY2UgYW5k
IGVhc3kKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgYWRkKExIUyBsaHMsIFJIUyByaHMsIFJlc3Vs
dFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVSKEdD
Q19DT01QQVRJQkxFKQogICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1
aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vs
c2UKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wID0gbGhzICsgcmhzOworI2lmIENPTVBJTEVSKEdD
Q19DT01QQVRJQkxFKQorI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICBpZiBjb25zdGV4cHIg
KHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9m
KHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVy
ZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAh
SEFWRShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgdGVtcCA9
IGxocyArIHJoczsKICAgICAgICAgaWYgKHRlbXAgPCBsaHMpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2Vu
ZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIHN1YihMSFMgbGhzLCBSSFMgcmhz
LCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKLSNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkKICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBp
ZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbHNlCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcCA9IGxocyAtIHJoczsKKyNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYgY29u
c3RleHByIChzaXplb2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMpIDw9
IHNpemVvZih1aW50NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9z
dWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCisgICAgICAg
IHRlbXAgPSBsaHMgLSByaHM7CiAgICAgICAgIGlmICh0ZW1wID4gbGhzKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSB0ZW1wOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShMSFMg
bGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAg
IHsKICNpZiBVU0UoTVVMX09WRVJGTE9XKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAg
ICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotI2Vsc2UKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBidWlsdGluIGlmIHRoZSBp
bnQxMjggdHlwZSBpcyBXVEY6OkludDEyOEltcGwuCisgICAgICAgIC8vIEFsc28gZG9uJ3QgdXNl
IHRoZSBidWlsdGluIGZvciBfX2ludDEyOF90IG9uIENsYW5nL0xpbnV4LgorICAgICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNAorI2lmICFIQVZF
KElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKSkKKyAgICAgICAgaWYg
Y29uc3RleHByIChzaXplb2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMp
IDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUmVzdWx0VHlwZSB0
ZW1wOworICAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cobGhzLCByaHMsICZ0
ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQg
PSB0ZW1wOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpIHx8
IChDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICB9CisjZW5kaWYKKyNlbmRp
ZgogICAgICAgICBpZiAoIWxocyB8fCAhcmhzKSB7CiAgICAgICAgICAgICByZXN1bHQgPSAwOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MzQsNyArNDcxLDYgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJp
dGhtZXRpY09wZXIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0ID0g
bGhzICogcmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0
YXRpYyBpbmxpbmUgYm9vbCBkaXZpZGUoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVz
dWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IGRlMGI0NWJkMGE4OGVhYmE0
NjZiNmU2YzBhZDY2ZGMwMmY1MjU3NDEuLjdiYjI3ZTk5NzZmYjE0ZTA2ZmE0ZWU0ODU1MzYxN2Zj
YTA2ZDhkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291
cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtMzg4LDYgKzM4OCwxMSBAQCBpbmxpbmUgaW50IGRh
eUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCiAgICAg
cmV0dXJuIGQgLSBzdGVwOwogfQogCitpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3Vy
LCBkb3VibGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCit7CisgICAgcmV0dXJuICgoKGhv
dXIgKiBXVEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0ZSAr
IHNlYykgKiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOworfQorCiAvLyBSZXR1cm5zIGNvbWJpbmVk
IG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFURSBM
b2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1pbGxp
c2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApAQCAtNDEwLDYgKzQxNSw3IEBAIHVzaW5n
IFdURjo6bXNUb0hvdXJzOwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RGOjpz
ZWNvbmRzUGVyTWludXRlOwogdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRD
aGFyYWN0ZXJzOwordXNpbmcgV1RGOjp0aW1lVG9NUzsKIHVzaW5nIFdURjo6bWFrZVJGQzI4MjJE
YXRlU3RyaW5nOwogdXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7CiB1c2luZyBXVEY6OmNhbGN1
bGF0ZUxvY2FsVGltZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5o
IGIvU291cmNlL1dURi93dGYvSW50MTI4LmgKaW5kZXggM2JkYjBhNDVlZjVjNDlhZmVlMmI5ZGRm
ZDMwYThhYzI1MjBkNjNmYS4uOTJmNTMyZjRmNjQxNTIzNThkMDUzZTc3NmMzNDc1N2UxOTQ5ZGZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTI4LmgKKysrIGIvU291cmNlL1dURi93
dGYvSW50MTI4LmgKQEAgLTEwLDcgKzEwLDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDxjbWF0aD4KICNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvTGVhZGluZ1plcm9CaXRDb3VudC5oPgogCkBA
IC0zNiw2ICszOCw4NSBAQCBwdWJsaWM6CiAgICAgICAgIDogbG93XyB7c3RhdGljX2Nhc3Q8c3Rk
Ojp1aW50NjRfdD4obil9CiAgICAgICAgICwgaGlnaF8gey1zdGF0aWNfY2FzdDxzdGQ6OnVpbnQ2
NF90PihuIDwgMCl9CiAgICAgeyB9CisgICAgZXhwbGljaXQgY29uc3RleHByIEludDEyOEltcGwo
ZG91YmxlIG4pCisgICAgeworICAgICAgICAvLyBCYXNlZCBvbiBfX2ZpeGRmdGkoKSBhbmQgX19m
aXh1bnNkZnRpKCkgZnJvbSBjb21waWxlcl9ydDoKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2xsdm0vbGx2bS1wcm9qZWN0L2Jsb2IvZjM2NzFkZTU1MDBmZjFmODIxMDQxOTIyNmE5NjAz
YTdkODNiMWEzMS9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvZnBfZml4aW50X2ltcGwuaW5jCisg
ICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcx
ZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0
aW5zL2ZwX2ZpeHVpbnRfaW1wbC5pbmMKKworICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgdHlw
ZVdpZHRoID0gMTI4OworICAgICAgICBjb25zdGV4cHIgaW50IHNpZ25pZmljYW5kQml0cyA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzIC0gMTsKKyAgICAgICAgY29uc3RleHBy
IGludCBleHBvbmVudEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6dWludDY0X3Q+Ojpk
aWdpdHMgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0czsKKyAgICAgICAgY29u
c3RleHByIGludCBleHBvbmVudEJpYXMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1h
eF9leHBvbmVudCAtIDE7CisgICAgICAgIGNvbnN0ZXhwciBzdGQ6OnVpbnQ2NF90IGltcGxpY2l0
Qml0ID0gc3RkOjp1aW50NjRfdCB7IDEgfSA8PCBzaWduaWZpY2FuZEJpdHM7CisgICAgICAgIGNv
bnN0ZXhwciBzdGQ6OnVpbnQ2NF90IHNpZ25pZmljYW5kTWFzayA9IGltcGxpY2l0Qml0IC0gc3Rk
Ojp1aW50NjRfdCB7IDEgfTsKKyAgICAgICAgY29uc3RleHByIHN0ZDo6dWludDY0X3Qgc2lnbk1h
c2sgPSBzdGQ6OnVpbnQ2NF90IHsgMSB9IDw8IChzaWduaWZpY2FuZEJpdHMgKyBleHBvbmVudEJp
dHMpOworICAgICAgICBjb25zdGV4cHIgc3RkOjp1aW50NjRfdCBhYnNNYXNrID0gc2lnbk1hc2sg
LSBzdGQ6OnVpbnQ2NF90IHsgMSB9OworCisgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBjb25zdCBzdGQ6OnVpbnQ2NF90IGJpdHMgPSBkb3VibGVBc0JpdHMo
bik7CisgICAgICAgIGNvbnN0IHN0ZDo6dWludDY0X3QgbkFicyA9IGJpdHMgJiBhYnNNYXNrOwor
CisgICAgICAgIC8vIEJyZWFrIG4gaW50byBzaWduLCBleHBvbmVudCwgc2lnbmlmaWNhbmQgcGFy
dHMuCisgICAgICAgIGNvbnN0IGludCBzaWduID0gYml0cyAmIHNpZ25NYXNrID8gLTEgOiAxOwor
ICAgICAgICBjb25zdCBpbnQgZXhwb25lbnQgPSAobkFicyA+PiBzaWduaWZpY2FuZEJpdHMpIC0g
ZXhwb25lbnRCaWFzOworICAgICAgICBjb25zdCBzdGQ6OnVpbnQ2NF90IHNpZ25pZmljYW5kID0g
KG5BYnMgJiBzaWduaWZpY2FuZE1hc2spIHwgaW1wbGljaXRCaXQ7CisKKyAgICAgICAgLy8gSWYg
ZXhwb25lbnQgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgemVyby4KKyAgICAgICAgaWYgKGV4
cG9uZW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBJZiB0aGUgdmFs
dWUgaXMgbmVnYXRpdmUgYW5kIHRoaXMgdHlwZSBpcyB1bnNpZ25lZCwgdGhlIHJlc3VsdCBpcyAw
LgorICAgICAgICBpZiBjb25zdGV4cHIgKCFJU19TSUdORUQpIHsKKyAgICAgICAgICAgIGlmIChz
aWduICE9IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gU2hvcnRjdXQ6IHVzZSB0aGUgbmF0aXZlIGRvdWJsZS0+aW50NjQgY29udmVyc2lvbiBpZiBw
b3NzaWJsZS4KKyAgICAgICAgaWYgKGV4cG9uZW50IDwgNjQpIHsKKyAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAoSVNfU0lHTkVEKSB7CisgICAgICAgICAgICAgICAgbG93XyA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSk7CisgICAgICAgICAgICAgICAgaGln
aF8gPSAtc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG4gPCAwKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIGxvd18gPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgdG9v
IGxhcmdlIGZvciB0aGUgaW50ZWdlciB0eXBlLCBzYXR1cmF0ZS4KKyAgICAgICAgLy8gKE5vdGUs
IHRoaXMgYmVoYXZpb3VyIGlzIGRpZmZlcmVudCBmcm9tIG5hdGl2ZSBfX2ludDEyOC4pCisgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXhwb25lbnQpID49IHR5cGVXaWR0aCkgewor
ICAgICAgICAgICAgaWYgY29uc3RleHByIChJU19TSUdORUQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2lnbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIEludDEyOEltcGwgbWF4ID0gKH5J
bnQxMjhJbXBsIHsgMCB9KSAvIDI7CisgICAgICAgICAgICAgICAgICAgIGxvd18gPSBtYXgubG93
XzsKKyAgICAgICAgICAgICAgICAgICAgaGlnaF8gPSBtYXguaGlnaF87CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgSW50MTI4SW1wbCBtaW4gPSAtKCh+SW50
MTI4SW1wbCB7IDAgfSkgLyAyKSAtIDE7CisgICAgICAgICAgICAgICAgICAgIGxvd18gPSBtaW4u
bG93XzsKKyAgICAgICAgICAgICAgICAgICAgaGlnaF8gPSBtaW4uaGlnaF87CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbG93XyA9IGhpZ2hf
ID0gMHhmZmZmJ2ZmZmYnZmZmZidmZmZmOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgLy8gSWYgMCA8PSBleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cywgcmlnaHQg
c2hpZnQgdG8gZ2V0IHRoZSByZXN1bHQuCisgICAgICAgIC8vIE90aGVyd2lzZSwgc2hpZnQgbGVm
dC4KKyAgICAgICAgSW50MTI4SW1wbCByZXN1bHQgeyBzaWduaWZpY2FuZCB9OworICAgICAgICBp
ZiAoZXhwb25lbnQgPCBzaWduaWZpY2FuZEJpdHMpCisgICAgICAgICAgICByZXN1bHQgPj49IHNp
Z25pZmljYW5kQml0cyAtIGV4cG9uZW50OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1
bHQgPDw9IGV4cG9uZW50IC0gc2lnbmlmaWNhbmRCaXRzOworICAgICAgICByZXN1bHQgKj0gc2ln
bjsKKworICAgICAgICBsb3dfID0gcmVzdWx0Lmxvd187CisgICAgICAgIGhpZ2hfID0gcmVzdWx0
LmhpZ2hfOworICAgIH0KKworICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsKGNvbnN0IEludDEyOElt
cGw8IUlTX1NJR05FRD4gbikKKyAgICAgICAgOiBsb3dfIHsgbi5sb3coKSB9LCBoaWdoXyB7IG4u
aGlnaCgpIH0geyB9CiAgICAgY29uc3RleHByIEludDEyOEltcGwoY29uc3QgSW50MTI4SW1wbCAm
KSA9IGRlZmF1bHQ7CiAgICAgY29uc3RleHByIEludDEyOEltcGwoSW50MTI4SW1wbCAmJikgPSBk
ZWZhdWx0OwogICAgIGNvbnN0ZXhwciBJbnQxMjhJbXBsICZvcGVyYXRvcj0oY29uc3QgSW50MTI4
SW1wbCAmKSA9IGRlZmF1bHQ7CkBAIC00OSw2ICsxMzAsMjggQEAgcHVibGljOgogICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBvcGVyYXRvciBzdGQ6OnVpbnQ2NF90KCkgY29uc3QgeyByZXR1cm4gbG93
XzsgfQogICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBzdGQ6OmludDY0X3QoKSBjb25z
dCB7IHJldHVybiBsb3dfOyB9CiAgICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGludCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obG93Xyk7IH0KKyAgICBjb25zdGV4cHIg
ZXhwbGljaXQgb3BlcmF0b3IgZG91YmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFRyaXZp
YWwgY2FzZS4KKyAgICAgICAgaWYgKCFoaWdoXyAmJiAhbG93XykKKyAgICAgICAgICAgIHJldHVy
biAwLjA7CisKKyAgICAgICAgLy8gRklYTUU6IFNsb3cgaW1wbGVtZW50YXRpb24gdXNpbmcgc3Rk
OjpsZGV4cCgpIHdoaWxlIHNvcnRpbmcgb3V0IGJ1Z3MKKyAgICAgICAgLy8gaW4gdGhlIGludDEy
OCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBiYXNlZCBvbiB0aGUgb25lIGluIEFic2VpbC4KKyAg
ICAgICAgaWYgY29uc3RleHByIChJU19TSUdORUQpIHsKKyAgICAgICAgICAgIC8vIFdlIG11c3Qg
Y29udmVydCB0aGUgYWJzb2x1dGUgdmFsdWUgYW5kIHRoZW4gbmVnYXRlIGFzIG5lZWRlZCwgYmVj
YXVzZQorICAgICAgICAgICAgLy8gZmxvYXRpbmcgcG9pbnQgdHlwZXMgYXJlIHR5cGljYWxseSBz
aWduLW1hZ25pdHVkZS4gT3RoZXJ3aXNlLCB0aGUKKyAgICAgICAgICAgIC8vIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0aGUgaGlnaCBhbmQgbG93IDY0IGJpdHMgd2hlbiBpbnRlcnByZXRlZCBhcyB0d28n
cworICAgICAgICAgICAgLy8gY29tcGxlbWVudCBvdmVyd2hlbG1zIHRoZSBwcmVjaXNpb24gb2Yg
dGhlIG1hbnRpc3NhLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFsc28gY2hlY2sg
dG8gbWFrZSBzdXJlIHdlIGRvbid0IG5lZ2F0ZSBJbnQxMjhNaW4oKQorICAgICAgICAgICAgcmV0
dXJuIChoaWdoXyAmIHRvcEJpdCkgJiYgKGhpZ2hfICE9IHVpbnQ2NF90IHsgMSB9IDw8IDYzICYm
IGxvd18pCisgICAgICAgICAgICAgICAgPyAtc3RhdGljX2Nhc3Q8ZG91YmxlPigtKnRoaXMpCisg
ICAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxkb3VibGU+KGxvd18pICsgc3RkOjpsZGV4cChz
dGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KGhpZ2hfKSksIDY0KTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGxvd18pICsgc3Rk
OjpsZGV4cChzdGF0aWNfY2FzdDxkb3VibGU+KGhpZ2hfKSwgNjQpOworICAgIH0KIAogICAgIGNv
bnN0ZXhwciBzdGQ6OnVpbnQ2NF90IGhpZ2goKSBjb25zdCB7IHJldHVybiBoaWdoXzsgfQogICAg
IGNvbnN0ZXhwciBzdGQ6OnVpbnQ2NF90IGxvdygpIGNvbnN0IHsgcmV0dXJuIGxvd187IH0KQEAg
LTI1Niw2ICszNTksMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiA2NCArIGxlYWRp
bmdaZXJvQml0Q291bnQobG93Xyk7CiAgICAgICAgIHJldHVybiBsZWFkaW5nWmVyb0JpdENvdW50
KGhpZ2hfKTsKICAgICB9CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgc3RkOjp1aW50NjRf
dCBkb3VibGVBc0JpdHMoZG91YmxlIGQpCisgICAgeworICAgICAgICB1bmlvbiB7CisgICAgICAg
ICAgICBkb3VibGUgZDsKKyAgICAgICAgICAgIHN0ZDo6dWludDY0X3QgdTsKKyAgICAgICAgfSBi
aXRzOworICAgICAgICBiaXRzLmQgPSBkOworICAgICAgICByZXR1cm4gYml0cy51OworICAgIH0K
KyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBkb3VibGUgYml0c0FzRG91YmxlKHN0ZDo6dWlu
dDY0X3QgdSkKKyAgICB7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGRvdWJsZSBkOwor
ICAgICAgICAgICAgc3RkOjp1aW50NjRfdCB1OworICAgICAgICB9IGJpdHM7CisgICAgICAgIGJp
dHMudSA9IHU7CisgICAgICAgIHJldHVybiBiaXRzLmQ7CisgICAgfQogICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjp1aW50NjRfdCB0b3BCaXQge3N0ZDo6dWludDY0X3QgezF9IDw8IDYzfTsKICAg
ICBzdGQ6OnVpbnQ2NF90IGxvd18gezB9LCBoaWdoXyB7MH07CiB9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNmM2UwNGVhYWQ2NTU2ZGU3YjMy
MjYzNTgzYmZjM2E3OTdmMGUyYTcuLjJjZGQ5N2JiYzEzYjAyNTIwNTVmY2RiZGRjYjY1ZTQwNGFl
MzZmMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMC0yMSAgUGhpbGlwIENoaW1lbnRvICA8cGhpbGlwLmNo
aW1lbnRvQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5z
dGFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5
ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnQxMjguY3BwOiBBZGQgdGVzdHMgZm9yIGNvbnZlcnNp
b24gdG8gYW5kCisgICAgICAgICAgZnJvbSBkb3VibGUsIGFkYXB0ZWQgZnJvbSBDbGFuZydzIGNv
bXBpbGVyX3J0LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TWFrZUludDEyOCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpNYWtlVUludDEyOCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
ZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZEltcGwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZEltcGwpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Q29udmVydFRvRmxvYXRTaWdu
ZWRJbXBsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RDb252ZXJ0VG9GbG9hdFVuc2ln
bmVkSW1wbCk6CisKIDIwMjEtMTAtMTkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gT3ZlcnJpZGUgaHR0cCB1cmwgd2l0aCBzc2gg
dXJsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnQxMjguY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50MTI4LmNwcAppbmRleCA3NzViZjcx
MTk0MGRkNDIyZmY0NzIxYjRjZGJjNWU3ZmE3NjNmNDJjLi4zNDdiNjJhMjI0YzU3MDE2MWZlMGM5
YzRlMDU3ZjllZDBhNWVmZjc1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9JbnQxMjguY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludDEy
OC5jcHAKQEAgLTQsMTcgKzQsMzYgQEAKIAogLy8gQmFzZWQgb246CiAvLyBodHRwczovL2dpdGh1
Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9kNDgwZjk2OC9mbGFuZy91bml0dGVzdHMvRXZh
bHVhdGUvdWludDEyOC5jcHAKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVj
dC9ibG9iL2YzNjcxZGU1L2NvbXBpbGVyLXJ0L3Rlc3QvYnVpbHRpbnMvVW5pdC9maXhkZnRpX3Rl
c3QuYworLy8gaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2Jsb2IvZjM2NzFk
ZTUvY29tcGlsZXItcnQvdGVzdC9idWlsdGlucy9Vbml0L2ZpeHVuc2RmdGlfdGVzdC5jCisvLyBo
dHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNS9jb21waWxl
ci1ydC90ZXN0L2J1aWx0aW5zL1VuaXQvZmxvYXR0aWRmX3Rlc3QuYworLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2Jsb2IvZjM2NzFkZTUvY29tcGlsZXItcnQvdGVzdC9i
dWlsdGlucy9Vbml0L2Zsb2F0dW50aWRmX3Rlc3QuYwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCiAjaW5jbHVkZSA8Y2ludHR5cGVzPgorI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPGxpbWl0cz4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiB1c2luZyBOb25OYXRpdmVJbnQxMjggPSBXVEY6OkludDEyOEltcGw8dHJ1ZT47CiB1c2luZyBO
b25OYXRpdmVVSW50MTI4ID0gV1RGOjpJbnQxMjhJbXBsPGZhbHNlPjsKIAorc3RhdGljIGNvbnN0
ZXhwciBkb3VibGUgbWF4U2FmZUludGVnZXIgPSAweDEuZmZmZmZmZmZmZmZmZnArNTI7IC8vIGxh
c3QgZmxvYXRpbmcgcG9pbnQgdmFsdWUgdGhhdCBjb3JyZXNwb25kcyB0byBvbmx5IG9uZSBpbnRl
Z2VyCitzdGF0aWMgY29uc3RleHByIGludDY0X3QgbWF4U2FmZUludGVnZXI2NCA9IDkwMDcxOTky
NTQ3NDA5OTE7CisKK3N0YXRpYyBjb25zdGV4cHIgTm9uTmF0aXZlSW50MTI4IE1ha2VJbnQxMjgo
c3RkOjppbnQ2NF90IGhpZ2gsIHN0ZDo6dWludDY0X3QgbG93KQoreworICAgIHJldHVybiBOb25O
YXRpdmVJbnQxMjggeyBOb25OYXRpdmVVSW50MTI4IHsgaGlnaCB9IDw8IDY0IHwgbG93IH07Cit9
CisKK3N0YXRpYyBjb25zdGV4cHIgTm9uTmF0aXZlVUludDEyOCBNYWtlVUludDEyOChzdGQ6OnVp
bnQ2NF90IGhpZ2gsIHN0ZDo6dWludDY0X3QgbG93KQoreworICAgIHJldHVybiBOb25OYXRpdmVV
SW50MTI4IHsgaGlnaCB9IDw8IDY0IHwgbG93OworfQorCiBzdGF0aWMgdm9pZCBUZXN0VW5hcnko
c3RkOjp1aW50NjRfdCB4KQogewogICAgIE5vbk5hdGl2ZVVJbnQxMjggbiB7IHggfTsKQEAgLTY0
LDYgKzgzLDI2NyBAQCBURVNUKFdURl9JbnQxMjgsIEJhc2ljKQogICAgIH0KIH0KIAorc3RhdGlj
IHZvaWQgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWRJbXBsKGRvdWJsZSBhLCBOb25OYXRpdmVJ
bnQxMjggZXhwZWN0ZWQsIGNvbnN0IGNoYXIqIGFTdHIsIGNvbnN0IGNoYXIqIGV4cGVjdGVkU3Ry
KQoreworICAgIE5vbk5hdGl2ZUludDEyOCB4IHsgYSB9OworICAgIEVYUEVDVF9FUSh4LCBleHBl
Y3RlZCkgPDwgImNvbnZlcnQgIiA8PCBhU3RyIDw8ICIgdG8gc2lnbmVkIGludDEyOCwgZXhwZWN0
ZWQgIiA8PCBleHBlY3RlZFN0cjsKK30KKworc3RhdGljIHZvaWQgVGVzdENvbnZlcnRGcm9tRmxv
YXRVbnNpZ25lZEltcGwoZG91YmxlIGEsIE5vbk5hdGl2ZVVJbnQxMjggZXhwZWN0ZWQsIGNvbnN0
IGNoYXIqIGFTdHIsIGNvbnN0IGNoYXIqIGV4cGVjdGVkU3RyKQoreworICAgIE5vbk5hdGl2ZVVJ
bnQxMjggeCB7IGEgfTsKKyAgICBFWFBFQ1RfRVEoeCwgZXhwZWN0ZWQpIDw8ICJjb252ZXJ0ICIg
PDwgYVN0ciA8PCAiIHRvIHVuc2lnbmVkIGludDEyOCwgZXhwZWN0ZWQgIiA8PCBleHBlY3RlZFN0
cjsKK30KKworI2RlZmluZSBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZChhLCBleHBlY3RlZCkg
VGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWRJbXBsKGEsIGV4cGVjdGVkLCAjYSwgI2V4cGVjdGVk
KTsKKyNkZWZpbmUgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZChhLCBleHBlY3RlZCkgVGVz
dENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZEltcGwoYSwgZXhwZWN0ZWQsICNhLCAjZXhwZWN0ZWQp
OworCitURVNUKFdURl9JbnQxMjgsIENvbnZlcnNpb25Gcm9tRmxvYXRpbmdQb2ludCkKK3sKKyAg
ICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgwLjAsIDApOworCisgICAgVGVzdENvbnZlcnRG
cm9tRmxvYXRTaWduZWQoMC41LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgw
Ljk5LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgxLjAsIDEpOworICAgIFRl
c3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKDEuNSwgMSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxv
YXRTaWduZWQoMS45OSwgMSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMi4wLCAy
KTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgyLjAxLCAyKTsKKyAgICBUZXN0Q29u
dmVydEZyb21GbG9hdFNpZ25lZCgtMC41LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNp
Z25lZCgtMC45OSwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTEuMCwgLTEp
OworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKC0xLjUsIC0xKTsKKyAgICBUZXN0Q29u
dmVydEZyb21GbG9hdFNpZ25lZCgtMS45OSwgLTEpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0
U2lnbmVkKC0yLjAsIC0yKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtMi4wMSwg
LTIpOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMHgxLkZGRkZGRXArNjIsIDB4
N0ZGRkZGODAwMDAwMDAwMExMKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgweDEu
RkZGRkZDcCs2MiwgMHg3RkZGRkYwMDAwMDAwMDAwTEwpOworCisgICAgVGVzdENvbnZlcnRGcm9t
RmxvYXRTaWduZWQoLTB4MS5GRkZGRkVwKzYyLCBNYWtlSW50MTI4KDB4RkZGRkZGRkZGRkZGRkZG
RkxMLCAweDgwMDAwMDgwMDAwMDAwMDBMTCkpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2ln
bmVkKC0weDEuRkZGRkZDcCs2MiwgTWFrZUludDEyOCgweEZGRkZGRkZGRkZGRkZGRkZMTCwgMHg4
MDAwMDEwMDAwMDAwMDAwTEwpKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2lnbmVkKDB4
MS5GRkZGRkZGRkZGRkZGcCs2MiwgMHg3RkZGRkZGRkZGRkZGQzAwTEwpOworICAgIFRlc3RDb252
ZXJ0RnJvbUZsb2F0U2lnbmVkKDB4MS5GRkZGRkZGRkZGRkZFcCs2MiwgMHg3RkZGRkZGRkZGRkZG
ODAwTEwpOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTB4MS5GRkZGRkZGRkZG
RkZGcCs2MiwgTWFrZUludDEyOCgweEZGRkZGRkZGRkZGRkZGRkZMTCwgMHg4MDAwMDAwMDAwMDAw
NDAwTEwpKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZCgtMHgxLkZGRkZGRkZGRkZG
RkVwKzYyLCBNYWtlSW50MTI4KDB4RkZGRkZGRkZGRkZGRkZGRkxMLCAweDgwMDAwMDAwMDAwMDA4
MDBMTCkpOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoMHgxLkZGRkZGRkZGRkZG
RkZwKzEyNiwgTWFrZUludDEyOCgweDdGRkZGRkZGRkZGRkZDMDBMTCwgMCkpOworICAgIFRlc3RD
b252ZXJ0RnJvbUZsb2F0U2lnbmVkKDB4MS5GRkZGRkZGRkZGRkZFcCsxMjYsIE1ha2VJbnQxMjgo
MHg3RkZGRkZGRkZGRkZGODAwTEwsIDApKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0U2ln
bmVkKC0weDEuRkZGRkZGRkZGRkZGRnArMTI2LCBNYWtlSW50MTI4KDB4ODAwMDAwMDAwMDAwMDQw
MExMLCAwKSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLTB4MS5GRkZGRkZGRkZG
RkZFcCsxMjYsIE1ha2VJbnQxMjgoMHg4MDAwMDAwMDAwMDAwODAwTEwsIDApKTsKKworICAgIC8v
IG1heC9taW4gc2FmZSBpbnRlZ2VyIChhbmQgdGhlIG5leHQgY2xvc2VzdCBpbnRlZ2VyIHRvIDAg
ZnJvbSB0aGVyZSkKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFNpZ25lZChtYXhTYWZlSW50ZWdl
ciwgbWF4U2FmZUludGVnZXI2NCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLW1h
eFNhZmVJbnRlZ2VyLCAtbWF4U2FmZUludGVnZXI2NCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxv
YXRTaWduZWQobWF4U2FmZUludGVnZXIgLSAxLCBtYXhTYWZlSW50ZWdlcjY0IC0gMSk7CisgICAg
VGVzdENvbnZlcnRGcm9tRmxvYXRTaWduZWQoLShtYXhTYWZlSW50ZWdlciAtIDEpLCAtKG1heFNh
ZmVJbnRlZ2VyNjQgLSAxKSk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDAu
MCwgMCk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDAuNSwgMCk7CisgICAg
VGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgwLjk5LCAwKTsKKyAgICBUZXN0Q29udmVydEZy
b21GbG9hdFVuc2lnbmVkKDEuMCwgMSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25l
ZCgxLjUsIDEpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMS45OSwgMSk7Cisg
ICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgyLjAsIDIpOworICAgIFRlc3RDb252ZXJ0
RnJvbUZsb2F0VW5zaWduZWQoMi4wMSwgMik7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNp
Z25lZCgtMC41LCAwKTsgLy8gcmV0dXJucyAwIGZvciBuZWdhdGl2ZSBpbnB1dAorICAgIFRlc3RD
b252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoLTAuOTksIDApOworICAgIFRlc3RDb252ZXJ0RnJvbUZs
b2F0VW5zaWduZWQoLTEuMCwgMCk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgt
MS41LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0xLjk5LCAwKTsKKyAg
ICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0yLjAsIDApOworICAgIFRlc3RDb252ZXJ0
RnJvbUZsb2F0VW5zaWduZWQoLTIuMDEsIDApOworCisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRV
bnNpZ25lZCgweDEuRkZGRkZFcCs2MiwgMHg3RkZGRkY4MDAwMDAwMDAwTEwpOworICAgIFRlc3RD
b252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLkZGRkZGQ3ArNjIsIDB4N0ZGRkZGMDAwMDAwMDAw
MExMKTsKKworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoLTB4MS5GRkZGRkVwKzYy
LCAwKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0weDEuRkZGRkZDcCs2Miwg
MCk7CisKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS5GRkZGRkZGRkZGRkZG
cCs2MywgMHhGRkZGRkZGRkZGRkZGODAwVUxMKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVu
c2lnbmVkKDB4MS4wMDAwMDAwMDAwMDAwcCs2MywgMHg4MDAwMDAwMDAwMDAwMDAwVUxMKTsKKyAg
ICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS5GRkZGRkZGRkZGRkZGcCs2MiwgMHg3
RkZGRkZGRkZGRkZGQzAwVUxMKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4
MS5GRkZGRkZGRkZGRkZFcCs2MiwgMHg3RkZGRkZGRkZGRkZGODAwVUxMKTsKKworICAgIFRlc3RD
b252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLkZGRkZGRkZGRkZGRkZwKzEyNywgTWFrZVVJbnQx
MjgoMHhGRkZGRkZGRkZGRkZGODAwVUxMLCAwKSk7CisgICAgVGVzdENvbnZlcnRGcm9tRmxvYXRV
bnNpZ25lZCgweDEuMDAwMDAwMDAwMDAwMHArMTI3LCBNYWtlVUludDEyOCgweDgwMDAwMDAwMDAw
MDAwMDBVTEwsIDApKTsKKyAgICBUZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKDB4MS5GRkZG
RkZGRkZGRkZGcCsxMjYsIE1ha2VVSW50MTI4KDB4N0ZGRkZGRkZGRkZGRkMwMFVMTCwgMCkpOwor
ICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQoMHgxLkZGRkZGRkZGRkZGRkVwKzEyNiwg
TWFrZVVJbnQxMjgoMHg3RkZGRkZGRkZGRkZGODAwVUxMLCAwKSk7CisgICAgVGVzdENvbnZlcnRG
cm9tRmxvYXRVbnNpZ25lZCgweDEuMDAwMDAwMDAwMDAwMHArMTI4LCBNYWtlVUludDEyOCgweEZG
RkZGRkZGRkZGRkZGRkZVTEwsIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkpOworCisgICAgVGVzdENv
bnZlcnRGcm9tRmxvYXRVbnNpZ25lZCgtMHgxLkZGRkZGRkZGRkZGRkZwKzYyLCAwKTsKKyAgICBU
ZXN0Q29udmVydEZyb21GbG9hdFVuc2lnbmVkKC0weDEuRkZGRkZGRkZGRkZGRXArNjIsIDApOwor
CisgICAgLy8gbWF4L21pbiBzYWZlIGludGVnZXIgKGFuZCB0aGUgbmV4dCBjbG9zZXN0IGludGVn
ZXIgdG8gMCBmcm9tIHRoZXJlKQorICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0VW5zaWduZWQobWF4
U2FmZUludGVnZXIsIG1heFNhZmVJbnRlZ2VyNjQpOworICAgIFRlc3RDb252ZXJ0RnJvbUZsb2F0
VW5zaWduZWQobWF4U2FmZUludGVnZXIgLSAxLjAsIG1heFNhZmVJbnRlZ2VyNjQgLSAxKTsKK30K
Kworc3RhdGljIHZvaWQgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkSW1wbChOb25OYXRpdmVJbnQx
MjggYSwgZG91YmxlIGV4cGVjdGVkLCBjb25zdCBjaGFyKiBhU3RyLCBjb25zdCBjaGFyKiBleHBl
Y3RlZFN0cikKK3sKKyAgICBkb3VibGUgeCB7IGEgfTsKKyAgICBFWFBFQ1RfRVEoeCwgZXhwZWN0
ZWQpIDw8ICJjb252ZXJ0IHNpZ25lZCAiIDw8IGFTdHIgPDwgIiB0byBmbG9hdCwgZXhwZWN0ZWQg
IiA8PCBleHBlY3RlZFN0cjsKK30KKworc3RhdGljIHZvaWQgVGVzdENvbnZlcnRUb0Zsb2F0VW5z
aWduZWRJbXBsKE5vbk5hdGl2ZVVJbnQxMjggYSwgZG91YmxlIGV4cGVjdGVkLCBjb25zdCBjaGFy
KiBhU3RyLCBjb25zdCBjaGFyKiBleHBlY3RlZFN0cikKK3sKKyAgICBkb3VibGUgeCB7IGEgfTsK
KyAgICBFWFBFQ1RfRVEoeCwgZXhwZWN0ZWQpIDw8ICJjb252ZXJ0IHVuc2lnbmVkICIgPDwgYVN0
ciA8PCAiIHRvIGZsb2F0LCBleHBlY3RlZCAiIDw8IGV4cGVjdGVkU3RyOworfQorCisjZGVmaW5l
IFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChhLCBleHBlY3RlZCkgVGVzdENvbnZlcnRUb0Zsb2F0
U2lnbmVkSW1wbChhLCBleHBlY3RlZCwgI2EsICNleHBlY3RlZCkKKyNkZWZpbmUgVGVzdENvbnZl
cnRUb0Zsb2F0VW5zaWduZWQoYSwgZXhwZWN0ZWQpIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVk
SW1wbChhLCBleHBlY3RlZCwgI2EsICNleHBlY3RlZCkKKworVEVTVChXVEZfSW50MTI4LCBDb252
ZXJzaW9uVG9GbG9hdGluZ1BvaW50KQoreworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgw
LCAwLjApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDEsIDEuMCk7CisgICAgVGVz
dENvbnZlcnRUb0Zsb2F0U2lnbmVkKDIsIDIuMCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2ln
bmVkKDIwLCAyMC4wKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoLTEsIC0xLjApOwor
ICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgtMiwgLTIuMCk7CisgICAgVGVzdENvbnZlcnRU
b0Zsb2F0U2lnbmVkKC0yMCwgLTIwLjApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVk
KDB4N0ZGRkZGODAwMDAwMDAwMExMLCAweDEuRkZGRkZFcCs2Mik7CisgICAgVGVzdENvbnZlcnRU
b0Zsb2F0U2lnbmVkKDB4N0ZGRkZGRkZGRkZGRjgwMExMLCAweDEuRkZGRkZGRkZGRkZGRXArNjIp
OworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDdGRkZGRjAwMDAwMDAwMDBMTCwgMHgx
LkZGRkZGQ3ArNjIpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDdGRkZGRkZGRkZG
RkYwMDBMTCwgMHgxLkZGRkZGRkZGRkZGRkNwKzYyKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFNpZ25lZChNYWtlSW50MTI4KDB4ODAwMDAwODAwMDAwMDAwMExMLCAwKSwgLTB4MS5GRkZGRkVw
KzEyNik7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHg4MDAwMDAw
MDAwMDAwODAwTEwsIDApLCAtMHgxLkZGRkZGRkZGRkZGRkVwKzEyNik7CisgICAgVGVzdENvbnZl
cnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHg4MDAwMDEwMDAwMDAwMDAwTEwsIDApLCAtMHgx
LkZGRkZGQ3ArMTI2KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgw
eDgwMDAwMDAwMDAwMDEwMDBMTCwgMCksIC0weDEuRkZGRkZGRkZGRkZGQ3ArMTI2KTsKKworICAg
IFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4ODAwMDAwMDAwMDAwMDAwMExM
LCAwKSwgLTB4MS4wMDAwMDBwKzEyNyk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1h
a2VJbnQxMjgoMHg4MDAwMDAwMDAwMDAwMDAxTEwsIDApLCAtMHgxLjAwMDAwMHArMTI3KTsKKwor
ICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAwMDdGQjcyRTgwMDAwMDBMTCwgMHgxLkZF
RENCQXArNTApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZCNzJFQTAw
MDAwMExMLCAweDEuRkVEQ0JBOHArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgw
eDAwMDdGQjcyRUIwMDAwMDBMTCwgMHgxLkZFRENCQUNwKzUwKTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoMHgwMDA3RkI3MkVCRkZGRkZGTEwsIDB4MS5GRURDQkFGRkZGRkZDcCs1MCk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZCNzJFQzAwMDAwMExMLCAweDEu
RkVEQ0JCcCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAwN0ZCNzJFODAw
MDAwMUxMLCAweDEuRkVEQ0JBMDAwMDAwNHArNTApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0
U2lnbmVkKDB4MDAwN0ZCNzJFNjAwMDAwMExMLCAweDEuRkVEQ0I5OHArNTApOworICAgIFRlc3RD
b252ZXJ0VG9GbG9hdFNpZ25lZCgweDAwMDdGQjcyRTcwMDAwMDBMTCwgMHgxLkZFRENCOUNwKzUw
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoMHgwMDA3RkI3MkU3RkZGRkZGTEwsIDB4
MS5GRURDQjlGRkZGRkZDcCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDAw
N0ZCNzJFNDAwMDAwMUxMLCAweDEuRkVEQ0I5MDAwMDAwNHArNTApOworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFNpZ25lZCgweDAwMDdGQjcyRTQwMDAwMDBMTCwgMHgxLkZFRENCOXArNTApOworCisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDMExMLCAweDEuMUEz
Q0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZE
MEUwOTJEQTFMTCwgMHgxLjFBM0NGRTg3MDQ5NkRwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREIwTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRCOExMLCAweDEuMUEz
Q0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZE
MEUwOTJEQjZMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREJGTEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDMUxMLCAweDEuMUEz
Q0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZE
MEUwOTJEQzdMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREM4TEwsIDB4MS4xQTNDRkU4NzA0OTZFcCs1Nyk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkRDRkxMLCAweDEuMUEz
Q0ZFODcwNDk2RXArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZE
MEUwOTJERDBMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREQxTEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKDB4MDIzNDc5RkQwRTA5MkREOExMLCAweDEuMUEz
Q0ZFODcwNDk2RnArNTcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZCgweDAyMzQ3OUZE
MEUwOTJEREZMTCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxv
YXRTaWduZWQoMHgwMjM0NzlGRDBFMDkyREUwTEwsIDB4MS4xQTNDRkU4NzA0OTZGcCs1Nyk7CisK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJE
QzBMTCwgMCksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9h
dFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRBMUxMLCAxKSwgMHgxLjFBM0NGRTg3
MDQ5NkRwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgw
MjM0NzlGRDBFMDkyREIwTEwsIDIpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQjhMTCwgMyks
IDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChN
YWtlSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCNkxMLCA0KSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEy
MSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBF
MDkyREJGTEwsIDUpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRTaWduZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQzFMTCwgNiksIDB4MS4xQTND
RkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4
KDB4MDIzNDc5RkQwRTA5MkRDN0xMLCA3KSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAg
VGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREM4TEws
IDgpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRTaWdu
ZWQoTWFrZUludDEyOCgweDAyMzQ3OUZEMEUwOTJEQ0ZMTCwgOSksIDB4MS4xQTNDRkU4NzA0OTZF
cCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFNpZ25lZChNYWtlSW50MTI4KDB4MDIzNDc5
RkQwRTA5MkREMExMLCAwKSwgMHgxLjFBM0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZl
cnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREQxTEwsIDExKSwgMHgx
LjFBM0NGRTg3MDQ5NkZwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJ
bnQxMjgoMHgwMjM0NzlGRDBFMDkyREQ4TEwsIDEyKSwgMHgxLjFBM0NGRTg3MDQ5NkZwKzEyMSk7
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDky
RERGTEwsIDEzKSwgMHgxLjFBM0NGRTg3MDQ5NkZwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zs
b2F0U2lnbmVkKE1ha2VJbnQxMjgoMHgwMjM0NzlGRDBFMDkyREUwTEwsIDE0KSwgMHgxLjFBM0NG
RTg3MDQ5NkZwKzEyMSk7CisKKyAgICAvLyBtYXgvbWluIHNhZmUgaW50ZWdlciAoYW5kIHRoZSBu
ZXh0IGNsb3Nlc3QgaW50ZWdlciB0byAwIGZyb20gdGhlcmUpCisgICAgVGVzdENvbnZlcnRUb0Zs
b2F0U2lnbmVkKG1heFNhZmVJbnRlZ2VyNjQsIG1heFNhZmVJbnRlZ2VyKTsKKyAgICBUZXN0Q29u
dmVydFRvRmxvYXRTaWduZWQoLW1heFNhZmVJbnRlZ2VyNjQsIC1tYXhTYWZlSW50ZWdlcik7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKG1heFNhZmVJbnRlZ2VyNjQgLSAxLCBtYXhTYWZl
SW50ZWdlciAtIDEuMCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0U2lnbmVkKC0obWF4U2FmZUlu
dGVnZXI2NCAtIDEpLCAtKG1heFNhZmVJbnRlZ2VyIC0gMS4wKSk7CisKKyAgICBUZXN0Q29udmVy
dFRvRmxvYXRVbnNpZ25lZCgwLCAwLjApOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWdu
ZWQoMSwgMS4wKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgyLCAyLjApOworICAg
IFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDIwLCAyMC4wKTsKKworICAgIFRlc3RDb252ZXJ0
VG9GbG9hdFVuc2lnbmVkKDB4N0ZGRkZGODAwMDAwMDAwMExMLCAweDEuRkZGRkZFcCs2Mik7Cisg
ICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHg3RkZGRkZGRkZGRkZGODAwTEwsIDB4MS5G
RkZGRkZGRkZGRkZFcCs2Mik7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHg3RkZG
RkYwMDAwMDAwMDAwTEwsIDB4MS5GRkZGRkNwKzYyKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRV
bnNpZ25lZCgweDdGRkZGRkZGRkZGRkYwMDBMTCwgMHgxLkZGRkZGRkZGRkZGRkNwKzYyKTsKKwor
ICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4ODAwMDAwODAwMDAw
MDAwMExMLCAwKSwgMHgxLjAwMDAwMXArMTI3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNp
Z25lZChNYWtlVUludDEyOCgweDgwMDAwMDAwMDAwMDA4MDBMTCwgMCksIDB4MS4wMDAwMDAwMDAw
MDAxcCsxMjcpOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4
ODAwMDAxMDAwMDAwMDAwMExMLCAwKSwgMHgxLjAwMDAwMnArMTI3KTsKKyAgICBUZXN0Q29udmVy
dFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDgwMDAwMDAwMDAwMDEwMDBMTCwgMCksIDB4
MS4wMDAwMDAwMDAwMDAycCsxMjcpOworCisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQo
TWFrZVVJbnQxMjgoMHg4MDAwMDAwMDAwMDAwMDAwTEwsIDApLCAweDEuMDAwMDAwcCsxMjcpOwor
ICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4ODAwMDAwMDAwMDAw
MDAwMUxMLCAwKSwgMHgxLjAwMDAwMDAwMDAwMDAwMDJwKzEyNyk7CisKKyAgICBUZXN0Q29udmVy
dFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRTgwMDAwMDBMTCwgMHgxLkZFRENCQXArNTApOwor
CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3RkI3MkVBMDAwMDAwTEwsIDB4
MS5GRURDQkE4cCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3RkI3
MkVCMDAwMDAwTEwsIDB4MS5GRURDQkFDcCs1MCk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5z
aWduZWQoMHgwMDA3RkI3MkVCRkZGRkZGTEwsIDB4MS5GRURDQkFGRkZGRkZDcCs1MCk7CisgICAg
VGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoMHgwMDA3RkI3MkVDMDAwMDAwTEwsIDB4MS5GRURD
QkJwKzUwKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAwMDdGQjcyRTgwMDAw
MDFMTCwgMHgxLkZFRENCQTAwMDAwMDRwKzUwKTsKKworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVu
c2lnbmVkKDB4MDAwN0ZCNzJFNjAwMDAwMExMLCAweDEuRkVEQ0I5OHArNTApOworICAgIFRlc3RD
b252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJFNzAwMDAwMExMLCAweDEuRkVEQ0I5Q3Ar
NTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJFN0ZGRkZGRkxM
LCAweDEuRkVEQ0I5RkZGRkZGQ3ArNTApOworICAgIFRlc3RDb252ZXJ0VG9GbG9hdFVuc2lnbmVk
KDB4MDAwN0ZCNzJFNDAwMDAwMUxMLCAweDEuRkVEQ0I5MDAwMDAwNHArNTApOworICAgIFRlc3RD
b252ZXJ0VG9GbG9hdFVuc2lnbmVkKDB4MDAwN0ZCNzJFNDAwMDAwMExMLCAweDEuRkVEQ0I5cCs1
MCk7CisKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQzBM
TCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25l
ZCgweDAyMzQ3OUZEMEUwOTJEQTFMTCwgMHgxLjFBM0NGRTg3MDQ5NkRwKzU3KTsKKyAgICBUZXN0
Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQjBMTCwgMHgxLjFBM0NGRTg3
MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUw
OTJEQjhMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRV
bnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQjZMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAg
ICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQkZMTCwgMHgxLjFB
M0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3
OUZEMEUwOTJEQzFMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQzdMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEQzhMTCwg
MHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgw
eDAyMzQ3OUZEMEUwOTJEQ0ZMTCwgMHgxLjFBM0NGRTg3MDQ5NkVwKzU3KTsKKyAgICBUZXN0Q29u
dmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJERDBMTCwgMHgxLjFBM0NGRTg3MDQ5
NkVwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJE
RDFMTCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNp
Z25lZCgweDAyMzQ3OUZEMEUwOTJERDhMTCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKyAgICBU
ZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZEMEUwOTJEREZMTCwgMHgxLjFBM0NG
RTg3MDQ5NkZwKzU3KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZCgweDAyMzQ3OUZE
MEUwOTJERTBMTCwgMHgxLjFBM0NGRTg3MDQ5NkZwKzU3KTsKKworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRDMExMLCAwKSwgMHgxLjFB
M0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJ
bnQxMjgoMHgwMjM0NzlGRDBFMDkyREExTEwsIDEpLCAweDEuMUEzQ0ZFODcwNDk2RHArMTIxKTsK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUw
OTJEQjBMTCwgMiksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRCOExMLCAzKSwgMHgxLjFB
M0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJ
bnQxMjgoMHgwMjM0NzlGRDBFMDkyREI2TEwsIDQpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUw
OTJEQkZMTCwgNSksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRDMUxMLCA2KSwgMHgxLjFB
M0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJ
bnQxMjgoMHgwMjM0NzlGRDBFMDkyREM3TEwsIDcpLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUw
OTJEQzhMTCwgOCksIDB4MS4xQTNDRkU4NzA0OTZFcCsxMjEpOworICAgIFRlc3RDb252ZXJ0VG9G
bG9hdFVuc2lnbmVkKE1ha2VVSW50MTI4KDB4MDIzNDc5RkQwRTA5MkRDRkxMLCA5KSwgMHgxLjFB
M0NGRTg3MDQ5NkVwKzEyMSk7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQoTWFrZVVJ
bnQxMjgoMHgwMjM0NzlGRDBFMDkyREQwTEwsIDApLCAweDEuMUEzQ0ZFODcwNDk2RXArMTIxKTsK
KyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUw
OTJERDFMTCwgMTEpLCAweDEuMUEzQ0ZFODcwNDk2RnArMTIxKTsKKyAgICBUZXN0Q29udmVydFRv
RmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZEMEUwOTJERDhMTCwgMTIpLCAweDEu
MUEzQ0ZFODcwNDk2RnArMTIxKTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtl
VUludDEyOCgweDAyMzQ3OUZEMEUwOTJEREZMTCwgMTMpLCAweDEuMUEzQ0ZFODcwNDk2RnArMTIx
KTsKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChNYWtlVUludDEyOCgweDAyMzQ3OUZE
MEUwOTJERTBMTCwgMTQpLCAweDEuMUEzQ0ZFODcwNDk2RnArMTIxKTsKKworICAgIC8vIG1heC9t
aW4gc2FmZSBpbnRlZ2VyIChhbmQgdGhlIG5leHQgY2xvc2VzdCBpbnRlZ2VyIHRvIDAgZnJvbSB0
aGVyZSkKKyAgICBUZXN0Q29udmVydFRvRmxvYXRVbnNpZ25lZChtYXhTYWZlSW50ZWdlcjY0LCBt
YXhTYWZlSW50ZWdlcik7CisgICAgVGVzdENvbnZlcnRUb0Zsb2F0VW5zaWduZWQobWF4U2FmZUlu
dGVnZXI2NCAtIDEsIG1heFNhZmVJbnRlZ2VyIC0gMS4wKTsKK30KKwogI2lmIEhBVkUoSU5UMTI4
X1QpCiBzdGF0aWMgX191aW50MTI4X3QgVG9OYXRpdmUoTm9uTmF0aXZlVUludDEyOCBuKQogewpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBl
ODEwYmExZjc0MThlNGUxMWM2M2U0YjBmNjkzMmY0ZDdiMmU2M2M1Li41ZWU4NzM3M2E2M2RiNDBj
ODY1YjBjN2QyZjM3ZmFhZjc1MjlmMTk1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTIxICBQaGls
aXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBs
ZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChpbnN0YW50cy5mb3JFYWNoKToKKyAgICAgICAgKHNob3VsZFRocm93
Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKGNvbnN0Lm1heFZhbHVlLm5ldy5UZW1w
b3JhbC5JbnN0YW50KToKKyAgICAgICAgKHNob3VsZEJlLmVwb2NoLnN1YnRyYWN0KToKKyAgICAg
ICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOiBObyBuZWVkIHRvIGlnbm9yZSBhbGwgVGVtcG9yYWwu
SW5zdGFudCB0ZXN0cworICAgICAgICAgIGFueW1vcmUsIG9ubHkgdGhlIG9uZXMgZm9yIHRoZSB1
bmltcGxlbWVudGVkIG1ldGhvZHMuCisKIDIwMjEtMTAtMTggIFBoaWxsaXAgTWF0ZXMgIDxwbWF0
ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBUZXN0IGNvdmVyYWdlIGZvciBKU0Mgc2hhZG93IHJl
YWxtcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwt
aW5zdGFudC5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNThiN2E1YjZjYTA1OTM0YTY0NTdkNmY1NmQ5ZDVjNWI1NDFlMmE4MgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKQEAgLTAsMCArMSw0MDcg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHth
Y3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZE5vdEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBl
eHBlY3RlZCBhIHZhbHVlIHRvIGJlIGRpZmZlcmVudCBmcm9tICR7ZXhwZWN0ZWR9YCk7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxl
dCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBl
cnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBl
Lm5hbWV9IWApOworICAgIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYg
KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChtZXNzYWdlKSA9PT0gJ1tvYmplY3QgUmVn
RXhwXScpIHsKKyAgICAgICAgICAgIGlmICghbWVzc2FnZS50ZXN0KFN0cmluZyhlcnJvcikpKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5nKGVycm9y
KX0nIHRvIG1hdGNoICR7bWVzc2FnZX0hYCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworLy8gZXBvY2gKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBv
cmFsLkluc3RhbnQoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29u
ZHMoMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDAp
LAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygwbiksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoMG4pLAorICAgICAg
ICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyksCisgICAgXTsK
KyAgICBpbnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hTZWNvbmRzLCAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
bGxpc2Vjb25kcywgMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29u
ZHMsIDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5NzAtMDEtMDFUMDA6MDA6
MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTcwLTAxLTAxVDAw
OjAwOjAwWicpOworICAgIH0pOworfQorCisvLyBwb3NpdGl2ZSBlcG9jaCB2YWx1ZQoreworICAg
IGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgxXzAwMF8w
MDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2No
U2Vjb25kcygxXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hNaWxsaXNlY29uZHMoMV8wMDBfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAw
MF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAwMS0wOS0wOVQw
MTo0Njo0MFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDFfMDAwXzAwMF8wMDApOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAxXzAwMF8wMDBfMDAw
XzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDFfMDAw
XzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3Nl
Y29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC50b1N0cmluZygpLCAnMjAwMS0wOS0wOVQwMTo0Njo0MFonKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC50b0pTT04oKSwgJzIwMDEtMDktMDlUMDE6NDY6NDBaJyk7CisgICAgfSk7Cit9
CisKKy8vIG5lZ2F0aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisg
ICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiks
CisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtMV8wMDBfMDAwXzAw
MCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC0xXzAw
MF8wMDBfMDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9z
ZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hOYW5vc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyksCisgICAg
XTsKKyAgICBpbnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hTZWNvbmRzLCAtMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8w
MDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBf
MDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5n
KCksICcxOTM4LTA0LTI0VDIyOjEzOjIwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
SlNPTigpLCAnMTkzOC0wNC0yNFQyMjoxMzoyMFonKTsKKyAgICB9KTsKK30KKworLy8gbWF4aW50
NjQgZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRl
bXBvcmFsLkluc3RhbnQoOTIyMzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKDkyMjMzNzIwMzY4NTQ3NzU4MDduKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1on
KSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDkyMjMzNzIwMzYpOworICAgICAgICBzaG91
bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCA5MjIzMzcyMDM2ODU0KTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NW4pOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDkyMjMzNzIwMzY4NTQ3
NzU4MDduKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjI2Mi0wNC0x
MVQyMzo0NzoxNi44NTQ3NzU4MDdaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09O
KCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKTsKKyAgICB9KTsKK30KKworLy8g
bWluaW50NjQgZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAg
bmV3IFRlbXBvcmFsLkluc3RhbnQoLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcygtOTIyMzM3MjAzNjg1NDc3NTgwOG4p
LAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1
MjI0MTkyWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4gewor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgLTkyMjMzNzIwMzYpOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtOTIyMzM3MjAzNjg1NCk7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC05MjIzMzcyMDM2
ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTky
MjMzNzIwMzY4NTQ3NzU4MDhuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygp
LCAnMTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyk7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQudG9KU09OKCksICcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKTsKKyAgICB9
KTsKK30KKworLy8gbWF4IEluc3RhbnQgcmFuZ2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsK
KyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAw
biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyg4NjQwMF8wMDAw
XzAwMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcyg4
NjQwMF8wMDAwXzAwMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hN
aWNyb3NlY29uZHMoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBu
KSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMjc1NzYwLTA5LTEzVDAwOjAwOjAw
WicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgODY0MDBfMDAwMF8wMDAwKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAw
MCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDg2NDAwXzAw
MDBfMDAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vj
b25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQudG9TdHJpbmcoKSwgJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQudG9KU09OKCksICcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpOworICAg
IH0pOworfQorCisvLyBtaW4gSW5zdGFudCByYW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0g
WworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBf
MDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtODY0MDBf
MDAwMF8wMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29u
ZHMoLTg2NDAwXzAwMDBfMDAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaE1pY3Jvc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMF8w
MDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnLTI3MTgyMS0wNC0yMFQw
MDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDAp
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtODY0MDBfMDAw
MF8wMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMs
IC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoTmFub3NlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJy0yNzE4MjEtMDQtMjBUMDA6MDA6
MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIHRvbyBsYXJnZQorc2hvdWxkVGhyb3coKCkgPT4gbmV3
IFRlbXBvcmFsLkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJy
b3IsIC9cYjg2NDAwMDAwMDAwMDAwMDAwMDAwMDFcYi8pOworLy8gdG9vIHNtYWxsCitzaG91bGRU
aHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBf
MDAxbiksIFJhbmdlRXJyb3IsIC8tODY0MDAwMDAwMDAwMDAwMDAwMDAwMVxiLyk7CisvLyBsYXJn
ZXIgdGhhbiBtYXhpbnQxMjgKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50
KDFuIDw8IDEyOW4pLCBSYW5nZUVycm9yLCAvXGI2ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4
NjM1MzY0MjI5MTJcYi8pOworLy8gc21hbGxlciB0aGFuIG1pbmludDEyOAorc2hvdWxkVGhyb3co
KCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoLTFuIDw8IDEyOW4pLCBSYW5nZUVycm9yLCAvLTY4
MDU2NDczMzg0MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBkb2VzIG5vdCBj
cmFzaCB3aGVuIGJpZ2ludCBsb25nZXIgdGhhbiBtYXhpbnQzMiBkaWdpdHMKK3Nob3VsZFRocm93
KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KEJpZ0ludCgnOScucmVwZWF0KDIxNDc0ODM2NDcp
KSksIFJhbmdlRXJyb3IpOworLy8gY29uc3RydWN0cyBmcm9tIHN0cmluZworc2hvdWxkQmUobmV3
IFRlbXBvcmFsLkluc3RhbnQoJzAnKS5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisvLyB0aHJvd3Mg
b24gbnVtYmVyCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgwKSwgVHlw
ZUVycm9yKTsKKy8vIHRocm93cyBvbiBzdHJpbmcgdGhhdCBkb2VzIG5vdCBjb252ZXJ0IHRvIEJp
Z0ludAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoJ2FiYzEyMycpLCBT
eW50YXhFcnJvcik7CisKKy8vIEluc3RhbnQuZnJvbShpbnN0YW50KSBpcyBub3QgdGhlIHNhbWUg
b2JqZWN0Cit7CisgICAgY29uc3QgaW5zdCA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAyMC0w
Mi0xMlQxMTo0MiswMTowMFtFdXJvcGUvQW1zdGVyZGFtXScpOworICAgIHNob3VsZE5vdEJlKFRl
bXBvcmFsLkluc3RhbnQuZnJvbShpbnN0KSwgaW5zdCk7Cit9CisKKy8vIHRvU3RyaW5nCisKK3sK
KyAgICBjb25zdCBpMSA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyM1on
KTsKKyAgICBjb25zdCBpMiA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToy
MzozMFonKTsKKyAgICBjb25zdCBpMyA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNToyMzozMC4xMjM0WicpOworCisgICAgLy8gZGVmYXVsdCBpcyB0byBlbWl0IHNlY29uZHMg
YW5kIGRyb3AgdHJhaWxpbmcgemVyb3MgYWZ0ZXIgdGhlIGRlY2ltYWwnCisgICAgc2hvdWxkQmUo
aTEudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisgICAgc2hvdWxkQmUoaTIu
dG9TdHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6MjM6MzBaJyk7CisgICAgc2hvdWxkQmUoaTMudG9T
dHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8vIHRydW5jYXRl
cyB0byBtaW51dGUKKyAgICBbaTEsIGkyLCBpM10uZm9yRWFjaCgoaSkgPT4gc2hvdWxkQmUoaS50
b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScgfSksICcxOTc2LTExLTE4VDE1OjIzWicp
KTsKKworICAgIC8vIG90aGVyIHNtYWxsZXN0VW5pdHMgYXJlIGFsaWFzZXMgZm9yIGZyYWN0aW9u
YWwgZGlnaXRzCisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNv
bmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDAgfSkpOworICAg
IHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWlsbGlzZWNvbmQnIH0pLCBp
My50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDMgfSkpOworICAgIHNob3VsZEJl
KGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWljcm9zZWNvbmQnIH0pLCBpMy50b1N0cmlu
Zyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDYgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3Ry
aW5nKHsgc21hbGxlc3RVbml0OiAnbmFub3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogOSB9KSk7CisKKyAgICAvLyB0cnVuY2F0ZSBvciBwYWQgdG8gMiBw
bGFjZXMKKyAgICB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmRE
aWdpdHM6IDIgfTsKKyAgICAgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2
LTExLTE4VDE1OjIzOjAwLjAwWicpOworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRp
b25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRv
U3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKKyAgICB9CisgICAg
Ly8gcGFkIHRvIDcgcGxhY2VzCisgICAgeworICAgICAgICBjb25zdCBvcHRpb25zID0geyBmcmFj
dGlvbmFsU2Vjb25kRGlnaXRzOiA3IH07CisgICAgICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKG9w
dGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzowMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRC
ZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMDAwMDAwMFonKTsK
KyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIz
OjMwLjEyMzQwMDBaJyk7CisgICAgfQorCisgICAgLy8gcm91bmQgdG8gbmVhcmVzdAorICAgIHNo
b3VsZEJlKGkyLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2Rl
OiAnaGFsZkV4cGFuZCcgfSksICcxOTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkz
LnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnaGFs
ZkV4cGFuZCcgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKTsKKyAgICAvLyByb3VuZCB1
cAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91
bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJl
KGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAn
Y2VpbCcgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyNFonKTsKKyAgICAvLyByb3VuZCBkb3du
CisgICAgWydmbG9vcicsICd0cnVuYyddLmZvckVhY2goKHJvdW5kaW5nTW9kZSkgPT4geworICAg
ICAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5k
aW5nTW9kZSB9KSwgJzE5NzYtMTEtMThUMTU6MjNaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRv
U3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlIH0pLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjNaJyk7CisgICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIHJv
dW5kaW5nIGRvd24gaXMgdG93YXJkcyB0aGUgQmlnIEJhbmcsIG5vdCB0b3dhcmRzIDEgQkNFCisg
ICAgICAgIGNvbnN0IGk0ID0gVGVtcG9yYWwuSW5zdGFudC5mcm9tKCctMDAwMDk5LTEyLTE1VDEy
OjAwOjAwLjVaJyk7CisgICAgICAgIHNob3VsZEJlKGk0LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0
OiAnc2Vjb25kJywgcm91bmRpbmdNb2RlOiAnZmxvb3InIH0pLCAnLTAwMDA5OS0xMi0xNVQxMjow
MDowMFonKTsKKworICAgICAgICAvLyByb3VuZGluZyBjYW4gYWZmZWN0IGFsbCB1bml0cworICAg
ICAgICBjb25zdCBpNSA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk5OS0xMi0zMVQyMzo1OTo1
OS45OTk5OTk5OTlaJyk7CisgICAgICAgIHNob3VsZEJlKGk1LnRvU3RyaW5nKHsgZnJhY3Rpb25h
bFNlY29uZERpZ2l0czogOCwgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcyMDAwLTAx
LTAxVDAwOjAwOjAwLjAwMDAwMDAwWicpOworICAgIH0KK30KKworLy8gbGVhcCBzZWNvbmQgaXMg
Y29uc3RyYWluZWQKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAxNi0xMi0z
MVQyMzo1OTo2MFonKX1gLCAnMjAxNi0xMi0zMVQyMzo1OTo1OVonKTsKKy8vIHZhcmlhbnQgdGlt
ZSBzZXBhcmF0b3JzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEt
MTggMTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMTh0MTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MDBaJyk7CisvLyB2YXJpYW50IFVUQyBkZXNpZ25hdG9yCitzaG91bGRCZShgJHtUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjN6Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6
MDBaJyk7CisvLyBhbnkgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzCitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1OjIzOjMwLjEyWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1on
KX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKX1gLCAnMTk3Ni0xMS0xOFQx
NToyMzozMC4xMjM0WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2
LTExLTE4VDE1OjIzOjMwLjEyMzQ1WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Wicp
Oworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMw
LjEyMzQ1NlonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTZaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKX1g
LCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4WicpfWAsICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyMzQ1Njc4WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjM0NTY3ODlaJyk7CisvLyB2YXJpYW50IGRlY2ltYWwgc2VwYXJhdG9yCitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAsMTJaJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyk7CisvLyB2YXJpYW50IG1pbnVzIHNpZ24KK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlx1MjIx
MjAyOjAwJyl9YCwgJzE5NzYtMTEtMThUMTc6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1w
b3JhbC5JbnN0YW50LmZyb20oJ1x1MjIxMjAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAn
LTAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKTsKKy8vIG1peHR1cmUgb2YgYmFzaWMgYW5kIGV4
dGVuZGVkIGZvcm1hdAorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTEx
OFQxNToyMzozMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3NjExMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNToy
MzozMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAs
ICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50
LmZyb20oJyswMDE5NzYtMTEtMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0x
MS0xOFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDAw
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQx
NToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2
MTExOFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKKy8vIG9w
dGlvbmFsIHBhcnRzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEt
MThUMTU6MjM6MzArMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNVonKX1gLCAnMTk3Ni0xMS0xOFQx
NTowMDowMFonKTsKKy8vIGlnbm9yZXMgYW55IHNwZWNpZmllZCBjYWxlbmRhcgorLy8gRklYTUU6
IHBhcnNlIGNhbGVuZGFyCisvLyBzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wlt1LWNhPWRpc2NvcmRdJyl9YCwgJzE5NzYtMTEt
MThUMTU6MjM6MzAuMTIzNDU2Nzg5WicpOworLy8gbm8ganVuayBhdCBlbmQgb2Ygc3RyaW5nCitz
aG91bGRUaHJvdygoKSA9PiBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6
MzAuMTIzNDU2Nzg5Wmp1bmsnKSwgUmFuZ2VFcnJvcik7CisKKy8vIEZvciBjb252ZW5pZW5jZSBp
biBzZXZlcmFsIHRlc3RzCitjb25zdCBlcG9jaCA9IG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKTsK
K2NvbnN0IG1pblZhbHVlID0gbmV3IFRlbXBvcmFsLkluc3RhbnQoLTg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwXzAwMG4pOworY29uc3QgbWF4VmFsdWUgPSBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQw
MF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKworLy8gYWRkKCkKKworeworICAgIHNob3VsZEJl
KGVwb2NoLmFkZCh7IGhvdXJzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDM2MDBfMDAwXzAwMF8w
MDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBob3VyczogLTEgfSkuZXBvY2hOYW5vc2Vj
b25kcywgLTM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaW51
dGVzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDYwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgbWludXRlczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTYwXzAwMF8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgc2Vjb25kczogMSB9KS5lcG9jaE5h
bm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgc2Vj
b25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91
bGRCZShlcG9jaC5hZGQoeyBtaWxsaXNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWlsbGlzZWNvbmRzOiAtMSB9KS5l
cG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsg
bWljcm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgbWljcm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8w
MDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczogMSB9KS5lcG9jaE5h
bm9zZWNvbmRzLCAxbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IC0x
IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xbik7Cit9CisKK3sKKyAgICAvLyBtYXggZHVyYXRpb24g
dGhhdCBjYW4gYmUgYWRkZWQgdG8gYW55IEluc3RhbnQKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5h
ZGQoeyBob3VyczogNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVw
b2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IGhvdXJzOiAtNDhf
MDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pbnV0ZXM6IDI4ODBfMDAwMF8wMDAwIH0p
LmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3Vs
ZEJlKG1heFZhbHVlLmFkZCh7IG1pbnV0ZXM6IC0yODgwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1
ZS5hZGQoeyBzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1h
eFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IHNl
Y29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVw
b2NoTmFub3NlY29uZHMpOworICAgIC8vIG5vdGUsIHVuc2FmZSBpbnRlZ2VycyBmcm9tIGhlcmUg
b247IHRoZSBtdWx0aXBsaWNhdGlvbiB0byBjb252ZXJ0CisgICAgLy8gbWlsbGlzZWNvbmRzIGFu
ZCBtaWNyb3NlY29uZHMgdG8gbmFub3NlY29uZHMgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlCisg
ICAgLy8gYmlnaW50IGRvbWFpbi4KKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBtaWxsaXNl
Y29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pbGxpc2Vj
b25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pY3Jvc2Vj
b25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZh
bHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pY3Jv
c2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBt
aW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBu
YW5vc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNv
bmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5h
ZGQoeyBuYW5vc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hO
YW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cit9CisKK3sKKyAgICAvLyBv
dmVyZmxvd2luZyA2NCBiaXRzCisgICAgY29uc3QgZXhwNjQgPSAyICoqIDY0OworICAgIFsnaG91
cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3NlY29uZHMn
XS5mb3JFYWNoKCh1bml0KSA9PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFk
ZCh7IFt1bml0XTogZXhwNjQgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygo
KSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IC1leHA2NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7
CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IGV4cDY0IH0pLmVwb2NoTmFu
b3NlY29uZHMsIDE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRk
KHsgbmFub3NlY29uZHM6IC1leHA2NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMTg0NDY3NDQwNzM3
MDk1NTE2MTZuKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5nIDEyOCBiaXRzCisgICAgWydo
b3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25k
cycsICduYW5vc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAgICAgc2hvdWxkVGhy
b3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiBOdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVy
cm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiAtTnVt
YmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7Cit9CisKKy8vIHN1YnRyYWN0
KCkKKworeworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgaG91cnM6IDEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgLTM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0
cmFjdCh7IGhvdXJzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAzNjAwXzAwMF8wMDBfMDAwbik7
CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaW51dGVzOiAxIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIC02MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsg
bWludXRlczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBz
aG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IHNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywg
LTFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IHNlY29uZHM6
IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IC0x
IH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1
YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMG4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5h
bm9zZWNvbmRzLCAxXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3Nl
Y29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFuKTsKKyAgICBzaG91bGRCZShlcG9jaC5z
dWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxbik7Cit9CisK
K3sKKyAgICAvLyBtYXggZHVyYXRpb24gdGhhdCBjYW4gYmUgYWRkZWQgdG8gYW55IEluc3RhbnQK
KyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IGhvdXJzOiA0OF8wMDAwXzAwMDAgfSku
ZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxk
QmUobWluVmFsdWUuc3VidHJhY3QoeyBob3VyczogLTQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1
ZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMs
IG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRy
YWN0KHsgbWludXRlczogLTI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZh
bHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsg
c2Vjb25kczogMTcyODAwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5l
cG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IHNlY29u
ZHM6IC0xNzI4MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2No
TmFub3NlY29uZHMpOworICAgIC8vIG5vdGUsIHVuc2FmZSBpbnRlZ2VycyBmcm9tIGhlcmUgb247
IHRoZSBtdWx0aXBsaWNhdGlvbiB0byBjb252ZXJ0CisgICAgLy8gbWlsbGlzZWNvbmRzIGFuZCBt
aWNyb3NlY29uZHMgdG8gbmFub3NlY29uZHMgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlCisgICAg
Ly8gYmlnaW50IGRvbWFpbi4KKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pbGxp
c2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFs
dWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBt
aWxsaXNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBt
YXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFj
dCh7IG1pY3Jvc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVl
LnN1YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVw
b2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJl
KG1heFZhbHVlLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAw
MF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBuYW5vc2Vjb25kczogLTE3MjgwMF8wMDAw
XzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5v
c2Vjb25kcyk7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxvd2luZyA2NCBiaXRzCisgICAgY29uc3Qg
ZXhwNjQgPSAyICoqIDY0OworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21p
bGxpc2Vjb25kcycsICdtaWNyb3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7CisgICAgICAg
IHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiBleHA2NCB9KSwgUmFu
Z2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3Vu
aXRdOiAtZXhwNjQgfSksIFJhbmdlRXJyb3IpOworICAgIH0pOworICAgIHNob3VsZEJlKGVwb2No
LnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IGV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xODQ0
Njc0NDA3MzcwOTU1MTYxNm4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3Nl
Y29uZHM6IC1leHA2NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNm4p
OworfQorCit7CisgICAgLy8gb3ZlcmZsb3dpbmcgMTI4IGJpdHMKKyAgICBbJ2hvdXJzJywgJ21p
bnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJywgJ25hbm9z
ZWNvbmRzJ10uZm9yRWFjaCgodW5pdCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBl
cG9jaC5zdWJ0cmFjdCh7IFt1bml0XTogTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiAtTnVt
YmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
aW5kZXggOTYyZDUyNDYyNTI1YWZiYjI5NmQ5YWNmZDZkOGEwYTE0NGYyMGIzNC4uYWVkNjM0YjE4
ZmNhNmZhOTA5NjRjOGU5MTJjN2FiNjMyZjNiMzFlNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjMs
NyArMjMsOCBAQCBza2lwOgogICAgIC0gY2FsbGFibGUtYm91bmRhcnktcmVhbG1zCiAgIHBhdGhz
OgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0lu
c3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWlu
RGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQpAQCAtMzQs
NyArMzUsOCBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvVGltZVpvbmUK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1pvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3Qv
aW50bDQwMi9UZW1wb3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0lu
c3RhbnQKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pv
bmVkRGF0ZVRpbWUKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlw
ZS90b1pvbmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9Ob3cKICAg
ICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3QvaW50bDQwMi9U
ZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0yNDcsNiArMjQ5LDcgQEAgc2tpcDoKICAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9zbWFsbGVz
dHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
RHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3VuaXQt
cGx1cmFscy1hY2NlcHRlZC5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFu
dC9wcm90b3R5cGUvdG9TdHJpbmcvc21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2NhbGVuZGFyLXRl
bXBvcmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1l
L2Zyb20vY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL2VxdWFscy9jYWxlbmRhci10ZW1wb3JhbC1vYmpl
Y3QuanMKQEAgLTI3Miw2ICsyNzUsMTMgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9vcmRlci1vZi1vcGVyYXRpb25zLmpz
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwv
ZGF0ZXVudGlsLWZpZWxkLmpzCiAKKyAgICAjIERlcGVuZHMgb24gVGVtcG9yYWwuVGltZVpvbmUK
KyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5n
L3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCisgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9u
ZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKKyAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9m
ZnNldG5hbm9zZWNvbmRzZm9yLXdyb25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLXN0cmluZy1kYXRldGlt
ZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9T
dHJpbmcvdGltZXpvbmUuanMKKwogICAgICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5ab25lZERhdGVU
aW1lCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0
aXZldG8tem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZldG8tem9uZWRk
YXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5qcwpA
QCAtMjk5LDYgKzMwOSwxMSBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
RHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9u
ZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5qcwogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRk
YXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2UuanMK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9y
ZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3It
d3JvbmctdHlwZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9jb21w
YXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL0luc3RhbnQvZnJvbS9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9lcXVhbHMvYXJndW1lbnQtem9uZWRk
YXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5
cGUvc2luY2UvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvYXJndW1lbnQtem9uZWRkYXRldGltZS5q
cwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBhcmUvYXJndW1l
bnQtem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0
aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCiAgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25l
ZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5q
cwpAQCAtMzM0LDUgKzM0OSw2IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9EdXJhdGlvbi9wcm90b3R5cGUvcm91bmQvYmFsYW5jZS1uZWdhdGl2ZS1yZXN1bHQuanMKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3VuZC9yb3Vu
ZC1uZWdhdGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0
aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcworICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvaW5zdGFudC1z
dHJpbmcuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5
cGUvc2luY2UvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0
LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3VudGlsL2JhbGFuY2UtbmVnYXRpdmUt
dGltZS11bml0cy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442414</attachid>
            <date>2021-10-25 14:06:32 -0700</date>
            <delta_ts>2021-10-25 16:02:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211025140631.patch</filename>
            <type>text/plain</type>
            <size>139297</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Y2Y4MDVkN2U4NDk0NDQwZTlhN2RmNWY2NTI0NGFkZTNmMzAxNjE5Li4yOGEwZTJhNzQzNGNlNDJj
NzQzYjEyZmUyMzhjODE0ZDYxZWNiMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0yNSAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFp
bEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdWzMyYml0XSBEb24ndCBzcGVjdWxhdGUgQ2Vs
bCBvbiBQdXRCeVZhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA3YmQ4OWU4ODY1YmZlZmU3ZGJmZGM2YmUwZDRkYzgwZWViYTgw
Y2FjLi4yNjFiY2Y3NDc5MmIyMmY3NWUxNjg2ZWZjYzA3ZGZmYWFhZDM1NGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEwLTI1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlh
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaDogRG9uJ3QgdXNlIGJ1aWx0aW4gb3BlcmF0aW9ucyBpZiBfX2ludDEyOCBpcwor
ICAgICAgICAgIGJlaW5nIGVtdWxhdGVkIHVzaW5nIFdURjo6SW50MTI4LiBBbHNvIHdvcmsgYXJv
dW5kIENsYW5nL0xpbnV4IGJ1ZworICAgICAgICAgIHdoZXJlIF9fYnVpbHRpbl9tdWxfb3ZlcmZs
b3coKSBkb2Vzbid0IHdvcmsgb24gX19pbnQxMjguCisgICAgICAgICAgU2VlIGh0dHBzOi8vYnVn
cy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDQKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGgu
aDoKKyAgICAgICAgKFdURjo6dGltZVRvTVMpOiBNb3ZlZCBmcm9tIEpTRGF0ZU1hdGguaC4KKwog
MjAyMS0xMC0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBBZG9wdCBicmlkZ2VfY2FzdCBhbmQgbWFrZVZlY3RvciBpbiBhIGZldyBtb3JlIHBsYWNl
cywgaW5jbHVkaW5nIGNhc2VzIHdoZXJlIGFkb3B0Q0YvTlMgd2FzIHVzZWQgaW5jb3JyZWN0bHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4YjkxODJjZWQxMDE5NTFhOGQw
MDViMDZiN2UxN2MxOTYxYWRhMDc2Li45MmJmOTU2M2JmOWRmOWI4M2VjZTg1MzQyNWIyOTU3NmEz
MTI2ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEz
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRp
b25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50
aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93
LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA1YzQ3YWY5OWQ0MTc4YjJj
OWU2NGQyNTVlOGU5MzNjMDgwMTI0MWQ2Li43NjgxMzBiMGI3MDNlYWUyMDU2MTgzYWI2OGE3NDM1
NmYyNzdmODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBv
cmFsTm93LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKICQo
UFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCAxMTIyOWQ1N2IyYjNiZTg4ZjE4MGNjNmU4MDcxNzM1ZWU0Y2ZhOWVjLi42
NWY0OTZmMjgyYzcxMDc4OTYwMmM1OGE1NWYxZmNlOThkYmRkMmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBA
IC03Miw2ICs3Miw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL1RlbXBvcmFsTm93Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxPYmplY3QubHV0LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDlhNjM5MjM3ZjhiMjlkNmNmZTg4YzZjYmMyMWQ2YTkyYzViNzMzOTIuLjRlY2FlM2Yw
NTk4MTM5OGNiZjYzYTQ2NzllZThkZmNmZWI0Njg2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMDAsNiArMjAwLDggQEAgT0JKRUNUX0xVVF9IRUFE
RVJTID0gXAogICAgIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBv
cmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZS5sdXQuaCBcCisgICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggXAorICAg
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0Lmgg
XAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKICAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWM1NmMxMGVh
YTBlNGYwNmEyZTMwZTNhYWI2NDZhMGYwZGJiNjhjOC4uYWFlMTBiYzRiMzY1ZmM2N2FlZmU3Mjcx
NjBkMGI1MzMyZTE1NmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NzQs
NiArMTk3NCwxMSBAQAogCQlFM0ZGNzUzMzFEOUNFQTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkMxMkVGMjk0
RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3Vy
Y2VQcm92aWRlckNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNkQ2N0Q0MDI2
RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVt
cG9yYWxJbnN0YW50LmggKi87IH07CisJCUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmggKi87IH07CisJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaCAqLzsgfTsKKwkJRjZENjdENDcyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVG
IC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0
Lmx1dC5oICovOyB9OwogCQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JN
YWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MDQxNTUyMjUyRUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMDVGQUZEMUZFNENFREEw
MDA5MzIzMCAvKiBEZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MkQ2QTExMUZCRDQ5MUQwMDAyNDVGNCAv
KiBEZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKQEAgLTUzNzAsNiArNTM3NSwx
NCBAQAogCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0UwMjU1
NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NKU1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OworCQlGNkQ2N0QzOTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YWxJbnN0YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNCMjZGOTAy
RTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNkQ2N0QzRDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3
RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjZGMTUwMTgyNjkzRDMzRDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsTm93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDFBMjY5M0QzM0UwMDRCOThFRiAvKiBU
ZW1wb3JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEwNCw2ICs3MTE3LDgg
QEAKIAkJCQk5OTZCNzMxNDFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5o
ICovLAogCQkJCUUzQzQ2MzA1MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IubHV0LmggKi8sCiAJCQkJRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRjZENjdENDUyNkY5MTMwQTAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUY2RDY3RDQ2
MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovLAog
CQkJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8sCiAJCQkJQUQyRkND
MEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iu
bHV0LmggKi8sCkBAIC04MDczLDYgKzgwODgsMTIgQEAKIAkJCQlBM0M3RURCNDI2QjBEQjM3MDA0
QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTNDN0VEQjUy
NkIwREIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwICovLAogCQkJ
CUEzQzdFREIwMjZCMERCMzYwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgg
Ki8sCisJCQkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAg
Ki8sCisJCQkJRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICov
LAorCQkJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5jcHAgKi8sCisJCQkJRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yLmggKi8sCisJCQkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAgKi8sCisJCQkJRjZENjdEM0UyNkY5MDJFODAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oICovLAogCQkJCUY2RjE1MDFCMjY5M0Qz
M0UwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5jcHAgKi8sCiAJCQkJRjZGMTUwMTgyNjkzRDMzRDAw
NEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8sCiAJCQkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVG
IC8qIFRlbXBvcmFsT2JqZWN0LmNwcCAqLywKQEAgLTEwODE2LDYgKzEwODM3LDExIEBACiAJCQkJ
QTNDN0VEQjkyNkIwREIzODAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUEzQzdFREJBMjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQzdFREI2MjZCMERCMzgwMDRDMzRDNSAv
KiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0
MDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ0MjZG
OTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY2RDY3RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyog
VGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3RTI2RTg2N0I4
MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZG
RDdCMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBkZDhjYjYyNzI0MWJl
ODhjZWVmMDc0NTljODVlZjNjOGE5ZjhjODM3Li4yZDVmYzRmMzU0YmJmZDRkOTkxNGNiMmFjMjE3
MDUxZjQzMWYxMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIwLDYgKzEw
MjAsOSBAQCBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiBydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKK3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50LmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKK3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCA1OWIx
YzdlZjViMzkzZDJkYTQ5ZTQyNjY5OTQ0MDM2Njc2OGI5YTUwLi40MTA5MDQwODI3NThhMTNjNjRi
NTZhN2JkZTRiYjc4ODlkMjVjY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JU084NjAxLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
U084NjAxLmNwcApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgog
I2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgpAQCAtODc3LDYgKzg3OSwzNyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8
VGltZQogICAgIH0pOwogfQogCitzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50
KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jcHJvZC1UZW1wb3JhbEluc3RhbnRTdHJpbmcKKyAgICAvLyBUZW1wb3JhbEluc3Rh
bnRTdHJpbmcgOgorICAgIC8vICAgICBEYXRlIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAv
LyAgICAgRGF0ZSBEYXRlVGltZVNlcGFyYXRvciBUaW1lU3BlYyBUaW1lWm9uZU9mZnNldFJlcXVp
cmVkCisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGlt
ZVpvbmVPZmZzZXRSZXF1aXJlZAorICAgIC8vIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQgOgorICAg
IC8vICAgICBUaW1lWm9uZVVUQ09mZnNldCBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb25fb3B0
CisKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBi
dWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiB7CisgICAgICAgIGF1dG8gZGF0ZXRp
bWUgPSBwYXJzZURhdGVUaW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghZGF0ZXRpbWUpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtkYXRlLCBtYXliZVRp
bWUsIG1heWJlVGltZVpvbmVdID0gZGF0ZXRpbWUudmFsdWUoKTsKKyAgICAgICAgaWYgKCFtYXli
ZVRpbWVab25lIHx8ICghbWF5YmVUaW1lWm9uZS0+bV96ICYmICFtYXliZVRpbWVab25lLT5tX29m
ZnNldCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAvLyBGSVhN
RTogcGFyc2UgY2FsZW5kYXIgYW5ub3RhdGlvbgorICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBQbGFpblRpbWUg
dGltZTsKKyAgICAgICAgaWYgKG1heWJlVGltZSkKKyAgICAgICAgICAgIHRpbWUgPSBtYXliZVRp
bWUudmFsdWUoKTsKKworICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG1heWJlVGltZVpvbmUtPm1f
eiA/IDAgOiAqbWF5YmVUaW1lWm9uZS0+bV9vZmZzZXQ7CisgICAgICAgIHJldHVybiB7IEV4YWN0
VGltZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGRhdGUueWVhcigpLCBkYXRlLm1vbnRoKCksIGRh
dGUuZGF5KCksIHRpbWUuaG91cigpLCB0aW1lLm1pbnV0ZSgpLCB0aW1lLnNlY29uZCgpLCB0aW1l
Lm1pbGxpc2Vjb25kKCksIHRpbWUubWljcm9zZWNvbmQoKSwgdGltZS5uYW5vc2Vjb25kKCksIG9m
ZnNldCkgfTsKKyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0dGltZXpvbmVvZmZzZXRzdHJpbmcKIFN0cmluZyBmb3Jt
YXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkKIHsKQEAgLTk2OSw1ICsxMDAy
LDEyOSBAQCBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24pCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK0V4YWN0VGltZSBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0Fu
ZE9mZnNldChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2lnbmVkIGgsIHVu
c2lnbmVkIG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1pY3JvcywgdW5z
aWduZWQgbnMsIGludDY0X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCh5ID49IC05OTk5OTkgJiYg
eSA8PSA5OTk5OTkpOworICAgIEFTU0VSVChtb24gPj0gMSAmJiBtb24gPD0gMTIpOworICAgIEFT
U0VSVChkID49IDEgJiYgZCA8PSAzMSk7CisgICAgQVNTRVJUKGggPj0gMCAmJiBoIDw9IDIzKTsK
KyAgICBBU1NFUlQobWluID49IDAgJiYgbWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA+PSAwICYm
IHMgPD0gNTkpOworICAgIEFTU0VSVChtcyA+PSAwICYmIG1zIDw9IDk5OSk7CisgICAgQVNTRVJU
KG1pY3JvcyA+PSAwICYmIG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA+PSAwICYmIG5z
IDw9IDk5OSk7CisKKyAgICBkb3VibGUgZGF0ZURheXMgPSBkYXRlVG9EYXlzRnJvbTE5NzAoeSwg
bW9uIC0gMSwgZCk7CisgICAgZG91YmxlIHRpbWVNcyA9IHRpbWVUb01TKGgsIG1pbiwgcywgbXMp
OworICAgIGRvdWJsZSB1dGNNcyA9IGRhdGVEYXlzICogbXNQZXJEYXkgKyB0aW1lTXM7CisgICAg
SW50MTI4IHV0Y05zID0gc3RhdGljX2Nhc3Q8SW50MTI4Pih1dGNNcykgKiAxJzAwMCcwMDAgKyBt
aWNyb3MgKiAxMDAwICsgbnM7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHV0Y05zIC0gb2Zmc2V0
IH07Cit9CisKK3VzaW5nIENoZWNrZWRJbnQxMjggPSBDaGVja2VkPEludDEyOCwgUmVjb3JkT3Zl
cmZsb3c+OworCitzdGF0aWMgQ2hlY2tlZEludDEyOCBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4
KGRvdWJsZSBuKQoreworICAgIC8vIEJhc2VkIG9uIF9fZml4ZGZ0aSgpIGFuZCBfX2ZpeHVuc2Rm
dGkoKSBmcm9tIGNvbXBpbGVyX3J0OgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xs
dm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgzYjFhMzEv
Y29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeGludF9pbXBsLmluYworICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0
MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeHVpbnRf
aW1wbC5pbmMKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpZ25pZmljYW5kQml0cyA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzIC0gMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBleHBvbmVudEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6ZGln
aXRzIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgZXhwb25lbnRCaWFzID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXhfZXhwb25lbnQgLSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgaW1wbGljaXRC
aXQgPSB1aW50NjRfdCB7IDEgfSA8PCBzaWduaWZpY2FuZEJpdHM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzaWduaWZpY2FuZE1hc2sgPSBpbXBsaWNpdEJpdCAtIHVpbnQ2NF90IHsg
MSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbk1hc2sgPSB1aW50NjRfdCB7
IDEgfSA8PCAoc2lnbmlmaWNhbmRCaXRzICsgZXhwb25lbnRCaXRzKTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ2NF90IGFic01hc2sgPSBzaWduTWFzayAtIHVpbnQ2NF90IHsgMSB9OworCisg
ICAgLy8gQnJlYWsgbiBpbnRvIHNpZ24sIGV4cG9uZW50LCBzaWduaWZpY2FuZCBwYXJ0cy4KKyAg
ICBjb25zdCB1aW50NjRfdCBiaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmbik7
CisgICAgY29uc3QgdWludDY0X3QgbkFicyA9IGJpdHMgJiBhYnNNYXNrOworICAgIGNvbnN0IGlu
dCBzaWduID0gYml0cyAmIHNpZ25NYXNrID8gLTEgOiAxOworICAgIGNvbnN0IGludCBleHBvbmVu
dCA9IChuQWJzID4+IHNpZ25pZmljYW5kQml0cykgLSBleHBvbmVudEJpYXM7CisgICAgY29uc3Qg
dWludDY0X3Qgc2lnbmlmaWNhbmQgPSAobkFicyAmIHNpZ25pZmljYW5kTWFzaykgfCBpbXBsaWNp
dEJpdDsKKworICAgIC8vIElmIGV4cG9uZW50IGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHpl
cm8uCisgICAgaWYgKGV4cG9uZW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHsgMCB9OworCisgICAg
Ly8gSWYgdGhlIHZhbHVlIGlzIHRvbyBsYXJnZSBmb3IgdGhlIGludGVnZXIgdHlwZSwgb3ZlcmZs
b3cuCisgICAgaWYgKGV4cG9uZW50ID49IDEyOCkKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpSZXN1
bHRPdmVyZmxvd2VkIH07CisKKyAgICAvLyBJZiAwIDw9IGV4cG9uZW50IDwgc2lnbmlmaWNhbmRC
aXRzLCByaWdodCBzaGlmdCB0byBnZXQgdGhlIHJlc3VsdC4KKyAgICAvLyBPdGhlcndpc2UsIHNo
aWZ0IGxlZnQuCisgICAgSW50MTI4IHJlc3VsdCB7IHNpZ25pZmljYW5kIH07CisgICAgaWYgKGV4
cG9uZW50IDwgc2lnbmlmaWNhbmRCaXRzKQorICAgICAgICByZXN1bHQgPj49IHNpZ25pZmljYW5k
Qml0cyAtIGV4cG9uZW50OworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0IDw8PSBleHBvbmVudCAt
IHNpZ25pZmljYW5kQml0czsKKyAgICByZXN1bHQgKj0gc2lnbjsKKyAgICByZXR1cm4geyByZXN1
bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IEV4YWN0VGltZTo6YWRkKER1cmF0
aW9uIGR1cmF0aW9uKSBjb25zdAoreworICAgIEFTU0VSVCghZHVyYXRpb24ueWVhcnMoKSk7Cisg
ICAgQVNTRVJUKCFkdXJhdGlvbi5tb250aHMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi53ZWVr
cygpKTsKKyAgICBBU1NFUlQoIWR1cmF0aW9uLmRheXMoKSk7CisKKyAgICBDaGVja2VkSW50MTI4
IHJlc3VsdE5zIHsgbV9lcG9jaE5hbm9zZWNvbmRzIH07CisKKyAgICAvLyBUaGUgZHVyYXRpb24n
cyBob3VycywgbWludXRlcywgc2Vjb25kcywgYW5kIG1pbGxpc2Vjb25kcyBzaG91bGQgYmUKKyAg
ICAvLyBhYmxlIHRvIGJlIGNhc3QgaW50byBhIDY0LWJpdCBpbnQuIDIqMWU4IDI0LWhvdXIgZGF5
cyBpcyB0aGUgbWF4aW11bQorICAgIC8vIHRpbWUgc3BhbiBmb3IgZXhhY3QgdGltZSwgc28gaWYg
d2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGR1cmF0aW9uIGV4Y2VlZHMKKyAgICAvLyB0aGF0LCB0
aGVuIHdlIGNhbiBiYWlsIG91dC4KKworICAgIENoZWNrZWRJbnQxMjggaG91cnMgPSBjaGVja2Vk
Q2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLmhvdXJzKCkpOworICAgIHJlc3VsdE5zICs9IGhv
dXJzICogRXhhY3RUaW1lOjpuc1BlckhvdXI7CisgICAgQ2hlY2tlZEludDEyOCBtaW51dGVzID0g
Y2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5taW51dGVzKCkpOworICAgIHJlc3Vs
dE5zICs9IG1pbnV0ZXMgKiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIENoZWNrZWRJbnQx
Mjggc2Vjb25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24uc2Vjb25kcygp
KTsKKyAgICByZXN1bHROcyArPSBzZWNvbmRzICogRXhhY3RUaW1lOjpuc1BlclNlY29uZDsKKyAg
ICBDaGVja2VkSW50MTI4IG1pbGxpc2Vjb25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgo
ZHVyYXRpb24ubWlsbGlzZWNvbmRzKCkpOworICAgIHJlc3VsdE5zICs9IG1pbGxpc2Vjb25kcyAq
IEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZDsKKyAgICBDaGVja2VkSW50MTI4IG1pY3Jvc2Vj
b25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWljcm9zZWNvbmRzKCkp
OworICAgIHJlc3VsdE5zICs9IG1pY3Jvc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3Nl
Y29uZDsKKyAgICByZXN1bHROcyArPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9u
Lm5hbm9zZWNvbmRzKCkpOworICAgIGlmIChyZXN1bHROcy5oYXNPdmVyZmxvd2VkKCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBFeGFjdFRpbWUgcmVzdWx0IHsgcmVzdWx0
TnMudmFsdWUoKSB9OworICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJbnQxMjggRXhhY3RUaW1l
Ojpyb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50MTI4IGluY3JlbWVu
dE5zIHsgaW5jcmVtZW50IH07CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkhvdXI6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJIb3VyOyBicmVhazsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6
Om5zUGVyTWludXRlOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBpbmNy
ZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TWlsbGlzZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWxs
aXNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiBpbmNy
ZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7IGJyZWFrOworICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5kTnVtYmVyVG9JbmNy
ZW1lbnQocXVhbnRpdHksIGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOworfQorCisvLyBEaWZm
ZXJlbmNlSW5zdGFudCAoIG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwgc21hbGxlc3RVbml0
LCByb3VuZGluZ01vZGUgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtZGlmZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRpbWU6OmRpZmZlcmVu
Y2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0
LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIEludDEyOCBkaWZmID0g
b3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIHJldHVy
biByb3VuZChkaWZmLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKK0V4YWN0
VGltZSBFeGFjdFRpbWU6OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVu
aXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4YWN0
VGltZSB7IHJvdW5kKG1fZXBvY2hOYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1bml0LCByb3VuZGlu
Z01vZGUpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGM3NDI0YWU5MzFl
ZmUxYjUwZGMwYWNkMjJiZjIxYjk5NzA5NTZhNmYuLjFjYmI2YjRmZDgwNWQxNTcxMmM5ODViOWRj
YzgyNDE3N2VlNzkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CkBAIC03OSw2ICs4MCwxMjIgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEgeyB9Owog
fTsKIAorY2xhc3MgRXhhY3RUaW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChFeGFj
dFRpbWUpOworcHVibGljOgorICAgIGNvbnN0ZXhwciBFeGFjdFRpbWUoKSA9IGRlZmF1bHQ7Cisg
ICAgY29uc3RleHByIEV4YWN0VGltZShjb25zdCBFeGFjdFRpbWUmKSA9IGRlZmF1bHQ7CisgICAg
Y29uc3RleHByIGV4cGxpY2l0IEV4YWN0VGltZShJbnQxMjggZXBvY2hOYW5vc2Vjb25kcykgOiBt
X2Vwb2NoTmFub3NlY29uZHMoZXBvY2hOYW5vc2Vjb25kcykgeyB9CisKKyAgICBzdGF0aWMgY29u
c3RleHByIEV4YWN0VGltZSBmcm9tRXBvY2hTZWNvbmRzKGludDY0X3QgZXBvY2hTZWNvbmRzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaFNlY29uZHMgfSAq
IEV4YWN0VGltZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4
YWN0VGltZSBmcm9tRXBvY2hNaWxsaXNlY29uZHMoaW50NjRfdCBlcG9jaE1pbGxpc2Vjb25kcykK
KyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWxsaXNlY29u
ZHMgfSAqIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgRXhhY3RUaW1lIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyhpbnQ2NF90IGVwb2NoTWlj
cm9zZWNvbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9j
aE1pY3Jvc2Vjb25kcyB9ICogRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsKKyAgICB9Cisg
ICAgc3RhdGljIEV4YWN0VGltZSBmcm9tSVNPUGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50
OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMs
IHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNl
dCk7CisKKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAg
ICB9CisgICAgY29uc3RleHByIGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNv
bmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcygpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAvIEV4YWN0VGltZTo6bnNQZXJN
aWNyb3NlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhwciBJbnQxMjggZXBvY2hOYW5vc2Vjb25k
cygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgaW50IG5hbm9z
ZWNvbmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7CisgICAg
fQorCisgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25kcyA8IDApIHsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBhc1N0cmluZ0ltcGwo
YnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxpZEVwb2NoTmFu
b3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcworICAg
IGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZXBvY2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vj
b25kcyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9lcG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9z
ZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0g
b3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vw
b2NoTmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNv
bmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVy
Lm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEV4YWN0VGlt
ZT4gYWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShFeGFjdFRpbWUg
b3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNv
bnN0OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5p
dCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHBy
IEludDEyOCBkYXlSYW5nZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAvLyAxZTggZGF5cwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQgeyAxMDAwIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7IDEnMDAwJzAwMCB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAw
MCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRlID0gbnNQZXJTZWNv
bmQgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1BlckhvdXIgPSBuc1Blck1p
bnV0ZSAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZhbHVlID0gLWRheVJh
bmdlU2Vjb25kcyAqIG5zUGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1h
eFZhbHVlID0gZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAgICBzdGF0aWMgdm9p
ZCBhc1N0cmluZ0ltcGwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4IHZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWls
ZGVyLCB2YWx1ZSAvIDEwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHZhbHVlICUgMTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50MTI4IHJv
dW5kKEludDEyOCBxdWFudGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJv
dW5kaW5nTW9kZSk7CisKKyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRzIHsgfTsKK307CisK
IGNsYXNzIFBsYWluVGltZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1l
KTsKIHB1YmxpYzoKQEAgLTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJp
bmcoUGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbgog
CiBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitzdGQ6Om9wdGlvbmFs
PEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBJ
U084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2M2U5NWJlZjAwNjIw
YTMwNmEzYTU1ZjA0YTY1NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNlNzA4ZDFhMmZmNTg0
YjBhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmgKQEAgLTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAgIFVEYXRlSW50ZXJ2
YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2Jq
ZWN0Kik7CiAKKyAgICBzdGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6IHVpbnQ4X3QgeyBO
b25lLCBOYXJyb3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBFcmEgOiB1aW50OF90
IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgWWVhciA6IHVp
bnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKaW5kZXggNzU4NGNmMGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcxY2YzYi4uNmU0ZDYy
NWM1MDJmMjBjNDNiZjlkNjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsTwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwog
fQogCisvLyBIYW5kbGVEYXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQsIHggKQorLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaGFuZGxlZGF0ZXRp
bWV2YWx1ZQorZG91YmxlIEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKworICAg
IC8vIEZJWE1FOgorICAgIC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRlbXBvcmFsIHR5cGVz
CisgICAgLy8gIC0gV29yayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8vICAtIFJldHVybiBV
RGF0ZUZvcm1hdCBhbmQgVURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCB4KTsKKyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIGluc3RhbnQt
PmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIFdURjo6dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmplY3QpKSk7Cit9CisK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0
ZVRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTAwLDE0ICsxMjIs
OCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAKICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJs
ZSB2YWx1ZTsKLQotICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0g
ZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAg
ICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
fQorICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVW
YWx1ZShnbG9iYWxPYmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShm
b3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTU2LDE0ICsxNzIs
OCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
RnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
RGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUuaXNVbmRlZmluZWQo
KSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50bERhdGVUaW1lRm9y
bWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9i
amVjdCwgdmFsdWUpKSk7CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xv
YmFsT2IKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFs
dWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAK
LSAgICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVE
YXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRl
VGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnRE
YXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CkBAIC0y
MTIsOSArMjIyLDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBpZiAoc3RhcnREYXRl
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0
ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0g
c3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnRE
YXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVj
dCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRp
bWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUg
aXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKaW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFlZGU1NDMwY2JmMmYy
NDFiMi4uNGI1OTZjMjdhNmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAog
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2ICsyMzIsNjIgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVj
dCwgdW5zaWduZWRWYWx1ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFsdWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgY3JlYXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAgIFVJbnQxMjggdW5z
aWduZWRWYWx1ZTsKKyAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAodmFsdWUgPCAwKSB7
CisgICAgICAgIHVuc2lnbmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4PigtKHZhbHVlICsg
MSkpICsgMTsKKyAgICAgICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIHVuc2ln
bmVkVmFsdWUgPSB2YWx1ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9IFVJTlQ2NF9NQVgp
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJvbUltcGwoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSksIHNpZ24pKTsKKwor
ICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAgICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIERpZ2l0IGxvd0Jp
dHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFs
dWUpKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAgICAgICBBU1NFUlQo
aGlnaEJpdHMpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93Qml0cyk7CisgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBiaWdJbnQtPnNldFNp
Z24oc2lnbik7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgQVNTRVJUKHNp
emVvZihEaWdpdCkgPT0gNCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0aWNfY2FzdDxEaWdp
dD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICBEaWdpdCBkaWdp
dDEgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFs
dWUgPj4gMzIpKTsKKyAgICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBEaWdpdCBkaWdpdDMg
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUg
Pj4gOTYpKTsKKworICAgIEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKworICAgIGludCBsZW5n
dGggPSBkaWdpdDMgPyA0IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aChnbG9iYWxPYmplY3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CisKKyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0MCk7CisgICAgYmln
SW50LT5zZXREaWdpdCgxLCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMiwgZGlnaXQy
KTsKKyAgICBpZiAoZGlnaXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDMsIGRpZ2l0Myk7
CisgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKIEpT
QmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBib29sIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFjMWQ4ZmI2MTAxYWI2
OGQ5NzBmMDJiNzFlZGNiMzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2FlMmExODYxMTYzM2I2
ZGE2Nzk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1v
bi5oIgogI2luY2x1ZGUgPHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQx
MjguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpT
R2xvYmFsT2JqZWN0KiwgdWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGludDY0X3QgdmFsdWUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0ds
b2JhbE9iamVjdCosIHVpbnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQxMjggdmFsdWUpOwog
ICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGJvb2wgdmFs
dWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGRv
dWJsZSB2YWx1ZSk7CiAKQEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwog
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRv
VWludDY0SGVhcChKU0JpZ0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQs
IG1fZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3Bw
CmluZGV4IGRhZTliM2E5YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJjZmYuLjUyMTlmOGY3
MjQyYjg2Zjk0MGU4MjgyMzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2IEBAIExvY2FsVGlt
ZU9mZnNldCBEYXRlQ2FjaGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWlsbGlzZWNvbmRzRnJv
bUVwb2NoLCBXVEY6OlRpCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3RhdGljIGlubGluZSBk
b3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJs
ZSBtcykKLXsKLSAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4p
ICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7
Ci19Ci0KIGRvdWJsZSBEYXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSYgdCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1
dFRpbWVUeXBlKQogewogICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFy
KCksIHQubW9udGgoKSwgdC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ZWM5MTJjNWQwOTMwMzBmOTQyMzFi
MjhiOTM4ZDEzNTA3Y2FhMjA0Li41Mjg1MWQ1MTE1ZDc5NzlhYWQ1ZWQ4YTU1YzhjZDA2NDY0ZTdl
MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0yMTAsNiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBl
KSk7CiAgICAgICAgICAgICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1Y3R1cmUuaW5pdExh
dGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQp
IHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlOjpjcmVhdGUoaW5pdC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90eXBlKSk7CisgICAg
ICAgICAgICB9KTsKKwogICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAg
ICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOwpAQCAtMjE2Niw2ICsyMTc1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAg
dGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmpl
Y3QtPm1faW5zdGFudFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rp
bWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZTczNjQ0NjMyZjVlYzg5ZmM4YmY1
ZDYzZmYxMDg2NDZjN2UzMjgwLi5mNjUwYTNkODllZjJhNWUwNWFiY2NhMTkzZTZkNTZjNzQyNmNl
NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGlt
ZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV90aW1lWm9uZVN0cnVjdHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1YmxpYzoKIAogICAg
IFN0cnVjdHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0
dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogaW5z
dGFudFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1l
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUo
KSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDkz
NGJlYjA5YTcwYjc2ZmZhMmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1NDY2ZDk4ZWZmOWY2
NGZkMDk3OWRjOTAwNzQxYmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1LDMxIEBAIFRlbXBv
cmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwog
fQogCisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxEdXJhdGlvbkxpa2Us
IGRpc2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNPODYwMTo6RHVyYXRp
b24gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1w
b3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
SVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmpl
Y3QsIGl0ZW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmICghaXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IGRpc2FsbG93ZWRV
bml0cykgeworICAgICAgICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJBZGRpbmcgIl9zLCB0
ZW1wb3JhbFVuaXRQbHVyYWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1YmxpY05hbWUoKSwgIiBu
b3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVU
aW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBv
cmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBp
dGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDgyZjJk
NWQ2NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDljZGRkNzc1YjExNWQx
N2QxZTFjZWZjMTQyNzdkNDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIERF
Q0xBUkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b1RlbXBvcmFsRHVy
YXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RHVy
YXRpb24gdG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpOwogICAgIHN0YXRp
YyBUZW1wb3JhbER1cmF0aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOGU5ODE4NWIyZjJmNDc5YzZiMzA0M2U0ZDg3YTRlNGZiZDFmNGE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50LmNwcApAQCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxJbnN0YW50LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklTTzg2
MDEuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQmlnSW50
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3Jh
bEluc3RhbnQpIH07CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK1RlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9CisKK1RlbXBvcmFs
SW5zdGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBBU1NFUlQoZXhhY3RU
aW1lLmlzVmFsaWQoKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VGVtcG9yYWxJbnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50KHZtLCBzdHJ1
Y3R1cmUsIGV4YWN0VGltZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIG9iamVjdDsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50ICggZXBvY2hOYW5v
c2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3Rh
bnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFjdFRpbWUuaXNWYWxp
ZCgpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtl
U3RyaW5nKGV4YWN0VGltZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNp
ZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVy
ZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRp
bWUpOworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZW
YWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBlcG9j
aE5hbm9zZWNvbmRzID0gdmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAoZXBvY2hOYW5vc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB0b3Rh
bCA9IGVwb2NoTmFub3NlY29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIElTTzg2MDE6
OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NFUlQoZXhhY3RUaW1l
LmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVj
dHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworICAg
IH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE5h
bm9zZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsKKyAgICBJbnQxMjgg
dG90YWw7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KSB7
CisgICAgICAgIEludDEyOCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdp
dCgwKSA6IDAgfTsKKyAgICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBi
aWdpbnQtPmRpZ2l0KDEpIDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBiaWdpbnQtPmxlbmd0
aCgpID4gMiA/IGJpZ2ludC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRvdGFsID0gZDIgPDwg
NjQgfCBkMSA8PCAzMiB8IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5n
dGgoKSA+IDM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihKU0JpZ0ludDo6
RGlnaXQpID09IDgpOworICAgICAgICBJbnQxMjggbG93IHsgYmlnaW50LT5sZW5ndGgoKSA+IDAg
PyBiaWdpbnQtPmRpZ2l0KDApIDogMCB9OworICAgICAgICBJbnQxMjggaGlnaCB7IGJpZ2ludC0+
bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAgICAgdG90YWwgPSBo
aWdoIDw8IDY0IHwgbG93OworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgo
KSA+IDI7CisgICAgfQorICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCAq
IChiaWdpbnQtPnNpZ24oKSA/IC0xIDogMSkgfTsKKworICAgIGlmIChiaWdJbnRUb29Mb25nIHx8
ICFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZyA9IGJp
Z2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CisgICAgICAgIGlmIChzY29wZS5leGNl
cHRpb24oKSkgeworICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAg
ICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAgICAgIH0KKwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhl
bGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBpcyBvdXRz
aWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3Ry
dWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4
YWN0VGltZSk7Cit9CisKKy8vIFRvVGVtcG9yYWxJbnN0YW50ICggaXRlbSApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsaW5zdGFu
dAorVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbEluc3RhbnQ+KHZtKSkK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpOworCisg
ICAgLy8gRklYTUU6IHdoZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5kcworICAgIC8vIGlm
IChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2bSkpCisgICAgLy8g
ICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3Rh
bnRTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+KGl0ZW1WYWx1ZSkt
PmVwb2NoVGltZSgpKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKworICAgIGF1dG8gcGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFyc2VJbnN0YW50KHN0
cmluZyk7CisgICAgaWYgKCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVsbGlwc2l6ZUF0KDEw
MCwgc3RyaW5nKSwgIicgaXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFudCBzdHJpbmciX3Mp
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFyc2VkRXhhY3RUaW1l
LnZhbHVlKCkpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICggaXRlbSApCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZy
b20KK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0
YW50Pih2bSkpIHsKKyAgICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IGpzQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpLT5leGFjdFRpbWUoKTsKKyAgICAgICAgcmV0
dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1
Y3R1cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9JbnN0YW50KGdsb2Jh
bE9iamVjdCwgaXRlbVZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hT
ZWNvbmRzICggZXBvY2hTZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcworVGVtcG9yYWxJbnN0
YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgZG91YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25kc1ZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihl
cG9jaFNlY29uZHMpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBtYWtlU3RyaW5nKGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51
bWJlciBvZiBlcG9jaCBzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRp
bWU6OmZyb21FcG9jaFNlY29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30K
KworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMgKCBlcG9jaE1pbGxp
c2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC5pbnN0YW50LmZyb21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1w
b3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGRvdWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2NoTWlsbGlzZWNvbmRz
VmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAgMQorICAgIGlmICgh
aXNJbnRlZ2VyKGVwb2NoTWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vjb25kcywgIiBpcyBu
b3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29uZHMiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4
YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGVwb2No
TWlsbGlzZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlm
VmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hNaWNyb3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9j
aG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9j
aE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2No
TWljcm9zZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
ZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRvQmlnSW50KGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGVwb2NoTWljcm9zZWNvbmRzLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBpbnQzMl90IG1pY3Jvc2Vjb25kcyA9IGVwb2NoTWljcm9zZWNvbmRzLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBhdXRvIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGlt
ZTo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAgICAgIEFTU0VSVChl
eGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9zZWNvbmRzKTsKKyAg
ICBib29sIGJpZ0ludFRvb0xvbmc7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6
OkRpZ2l0KSA9PSA0KQorICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+
IDI7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9
PSA4KTsKKyAgICAgICAgYmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAxOworICAg
IH0KKyAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kcyA9IEpTQmlnSW50Ojp0b0JpZ0ludDY0KGJpZ2lu
dCk7CisgICAgYXV0byBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1p
Y3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOworCisgICAgaWYgKGJpZ0ludFRvb0xvbmcgfHwgIWV4
YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nID0gYmlnaW50
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAg
YXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAgICAgfQorCisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVsbGlw
c2l6ZUF0KDEwMCwgYXJnQXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25kcyBpcyBvdXRzaWRl
IG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29uZHMgKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBv
Y2huYW5vc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9j
aE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hO
YW5vc2Vjb25kc1ZhbHVlKQoreworICAgIHJldHVybiB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5j
b21wYXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBvcmFsSW5zdGFudDo6
Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9uZVZhbHVlLCBK
U1ZhbHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiB0d28g
PSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpID4gdHdvLT5leGFj
dFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlmIChvbmUtPmV4YWN0
VGltZSgpIDwgdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKC0xKTsK
KyAgICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFs
SW5zdGFudDo6ZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3Jh
bEluc3RhbnQqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVj
dChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVf
b3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFRlbXBvcmFsVW5pdCBkZWZhdWx0
TGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRlbXBvcmFsVW5pdDo6U2Vjb25k
KTsKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgeyB9LCBkZWZhdWx0TGFyZ2VzdFVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52
YWx1ZV9vcihkZWZhdWx0TGFyZ2VzdFVuaXQpOworCisgICAgaWYgKHNtYWxsZXN0ICYmIGxhcmdl
c3QgJiYgc21hbGxlc3QgPCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdl
c3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSb3VuZGluZ01v
ZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heEluY3JlbWVudCA9IG1heGlt
dW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpOworICAgIEFTU0VSVChtYXhJbmNyZW1l
bnQgJiYgKm1heEluY3JlbWVudCA8PSAxMDAwKTsgLy8gdW5ib3VuZGVkIGluY3JlbWVudHMgYXJl
IGltcG9zc2libGUgd2l0aCBUZW1wb3JhbC5JbnN0YW50CisgICAgdW5zaWduZWQgaW5jcmVtZW50
ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heElu
Y3JlbWVudCwgZmFsc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBJbnQxMjggcm91bmRlZERpZmYgPSBleGFjdFRpbWUoKS5kaWZmZXJlbmNlKG90aGVyLT5l
eGFjdFRpbWUoKSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAg
Ly8gTk9URTogRHVyYXRpb24gZmllbGRzIGFyZSBjdXJyZW50bHkgZG91YmxlcywgYW5kIHRoZSB0
b3RhbCBudW1iZXIgb2YKKyAgICAvLyBuYW5vc2Vjb25kcyBtYXkgbm90IGZpdCBpbiBhIGRvdWJs
ZS4gVGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UgaWYgdGhlCisgICAgLy8gaW50ZXJuYWwgcmVwcmVz
ZW50YXRpb24gb2YgRHVyYXRpb24gY2hhbmdlcy4KKyAgICBBU1NFUlQocm91bmRlZERpZmYgLyAx
JzAwMCcwMDAnMDAwIDwgSU5UNjRfTUFYKTsKKyAgICBkb3VibGUgc2Vjb25kcyB7IHN0YXRpY19j
YXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYgLyAxJzAwMCcwMDAn
MDAwKSkgfTsKKyAgICBkb3VibGUgbmFub3NlY29uZHNSZW1haW5kZXIgeyBzdGF0aWNfY2FzdDxk
b3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJvdW5kZWREaWZmICUgMScwMDAnMDAwJzAwMCkp
IH07CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0IHsgMCwgMCwgMCwgMCwgMCwgMCwgc2Vj
b25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5kZXIgfTsKKworICAgIFRlbXBvcmFsRHVyYXRp
b246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVu
aXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5p
dDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHJldHVy
biAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVybiA4NjQwMDsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0ZTc7CisgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK0lTTzg2MDE6OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJvdW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25z
T2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RV
bml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFs
VW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghc21hbGxlc3Qp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qg
cm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFs
dWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFJvdW5kaW5nTW9kZSByb3Vu
ZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJv
dW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGRvdWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bUluY3JlbWVudChzbWFsbGVzdFVuaXQpLCB0
cnVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJu
IGV4YWN0VGltZSgpLnJvdW5kKGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUp
OworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25z
IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
aW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBj
b25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGlu
dGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAg
ICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHI7
CisgICAgSlNWYWx1ZSB0aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAg
ICAgdGltZVpvbmUgPSBUZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9iamVjdCwgdGltZVpv
bmVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
fQorCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0byBtYWtlIGEgbmV3
IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgorICAgIGlmIChzdGQ6
OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5nTW9k
ZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcodGltZVpv
bmUpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7IGV4YWN0VGltZSgp
LnJvdW5kKGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSkgfTsKKworICAg
IC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IHJv
dW5kZWRJbnN0YW50IGJlICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50KHJvdW5kZWROcykuCisgICAg
Ly8gLi4uCisgICAgLy8gMS4gSWYgX291dHB1dFRpbWVab25lXyBpcyAqdW5kZWZpbmVkKiwgdGhl
bgorICAgIC8vICAgMS4gU2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8gISBDcmVhdGVUZW1wb3JhbFRp
bWVab25lKCoiVVRDIiopLgorICAgIC8vIDEuIExldCBfaXNvQ2FsZW5kYXJfIGJlICEgR2V0SVNP
ODYwMUNhbGVuZGFyKCkuCisgICAgLy8gMS4gTGV0IF9kYXRlVGltZV8gYmUgPyBCdWlsdGluVGlt
ZVpvbmVHZXRQbGFpbkRhdGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9pbnN0YW50XywgX2lz
b0NhbGVuZGFyXykuCisgICAgSlNPYmplY3QqIG91dHB1dFRpbWVab25lID0gdGltZVpvbmU7Cisg
ICAgaWYgKG91dHB1dFRpbWVab25lKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRklYTUU6IFRlbXBvcmFsLkluc3RhbnQudG9TdHJpbmcoe3RpbWVab25lfSkg
bm90IGltcGxlbWVudGVkIHlldCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgcmV0dXJuIHRvU3RyaW5nKG5ld0V4YWN0VGltZSwgdGltZVpvbmUsIGRhdGEpOworfQorCisv
LyBUZW1wb3JhbEluc3RhbnRUb1N0cmluZyAoIGluc3RhbnQsIHRpbWVab25lLCBwcmVjaXNpb24g
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVt
cG9yYWxpbnN0YW50dG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKElT
Tzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9u
RGF0YSBwcmVjaXNpb24pCit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRp
bWUgeyBzdGF0aWNfY2FzdDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxpc2Vjb25kcygpKSwg
TG9jYWxUaW1lT2Zmc2V0IHsgfSB9OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAg
IC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAxMDAwIGFuZCA5OTk5IGlu
Y2x1c2l2ZSB3ZSB3YW50IHRvCisgICAgLy8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAo
UGFkSVNPWWVhcikuCisgICAgdW5zaWduZWQgeWVhckxlbmd0aCA9IDQ7CisgICAgaWYgKGdyZWdv
cmlhbkRhdGVUaW1lLnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpIDwg
MTAwMCkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkg
PCAwID8gJy0nIDogJysnKTsKKyAgICAgICAgeWVhckxlbmd0aCA9IDY7CisgICAgfQorCisgICAg
YnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFyTGVuZ3RoLCBzdGQ6OmFicyhn
cmVnb3JpYW5EYXRlVGltZS55ZWFyKCkpKSwKKyAgICAgICAgJy0nLCBwYWQoJzAnLCAyLCBncmVn
b3JpYW5EYXRlVGltZS5tb250aCgpICsgMSksCisgICAgICAgICctJywgcGFkKCcwJywgMiwgZ3Jl
Z29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSksCisgICAgICAgICdUJywgcGFkKCcwJywgMiwgZ3Jl
Z29yaWFuRGF0ZVRpbWUuaG91cigpKSwKKyAgICAgICAgJzonLCBwYWQoJzAnLCAyLCBncmVnb3Jp
YW5EYXRlVGltZS5taW51dGUoKSkpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG5zUGVy
U2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIGludCBmcmFjdGlvbiB7IGV4YWN0VGltZS5u
YW5vc2Vjb25kc0ZyYWN0aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAwKQorICAgICAgICBm
cmFjdGlvbiArPSBuc1BlclNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KGJ1
aWxkZXIsIGdyZWdvcmlhbkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsK
KworICAgIGlmICh0aW1lWm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVz
IG9uIFRpbWVab25lOgorICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVTdHJpbmdfIGJlID8g
QnVpbHRpblRpbWVab25lR2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8sIF9pbnN0YW50Xyku
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdaJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5MzdjN2VmYTNhZDQwNTZjMzli
YTEyNmEzOWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJJU084NjAxLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1
cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJWTS5oIgor
I2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBv
cmFsSW5zdGFudCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsSW5z
dGFudFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RXhhY3RUaW1lKTsKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiwgSVNPODYw
MTo6RXhhY3RUaW1lLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFRlbXBvcmFs
SW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFN0cnVj
dHVyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdG9JbnN0YW50KEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbShKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaFNlY29uZHMo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBm
cm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0
aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hOYW5vc2Vj
b25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBh
cmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKworICAgIElTTzg2MDE6OkV4
YWN0VGltZSBleGFjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGltZS5nZXQoKTsgfQor
CisgICAgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBv
cmFsSW5zdGFudCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNPODYwMTo6RXhhY3RU
aW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBT
dHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0Owor
ICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxscHRyLCBQcmVjaXNp
b25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0
OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9TdHJpbmco
ZXhhY3RUaW1lKCksIHRpbWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpFeGFjdFRpbWUpOwor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhJU084NjAxOjpFeGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7
CisKKyAgICBQYWNrZWQ8SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4YWN0VGltZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYTQy
ODBhMWNlNjcwOTBhNjc4MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVu
Y0Zyb21FcG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVu
Y0Zyb21FcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
JnRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IGZyb21FcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bUVwb2NoU2Vjb25kcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pbGxp
c2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNv
bmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNv
bXBhcmUgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFy
ZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGlu
c3RhbnRQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgaW5zdGFudFByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxs
VGVtcG9yYWxJbnN0YW50KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsSW5zdGFudCk7CisKK1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0YW50LCBjb25zdHJ1Y3RUZW1w
b3JhbEluc3RhbnQpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJv
dG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiSW5zdGFudCJfcywg
UHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBpbnN0YW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgaW5zdGFudFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIGlu
c3RhbnRTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVu
dCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIHN0cnVjdHVyZSkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbEluc3RhbnQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnN0YW50
IikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFu
dDo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21F
cG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaFNlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcywgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWljcm9zZWNvbmRz
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFu
b3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZy
b21FcG9jaE5hbm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFu
dDo6Y29tcGFyZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNkZWRlMmEyMTg5NWE4ZjJmNjk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciBm
aW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDk4Y2Fi
YjIwMDU0NWJkNDdhNTQyMmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFs
SW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3Qp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFscyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1Zh
bHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMpOworCit9
CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJhc2U6OnNfaW5mbywgJmluc3RhbnRQcm90b3R5
cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAgICAgICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwgICAgICAg
ICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBy
b3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1JvdW5kICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAgICAgICAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0pTT04gICAgICAg
ICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAgIHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZh
bHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlcG9jaFNlY29uZHMgICAgICAgdGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVtfFJlYWRP
bmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWlsbGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9t
QWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdl
dHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nvcgor
ICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hO
YW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLwor
CitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2
bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisK
K1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1Rl
bXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4g
ZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7CisgICAgVGVtcG9yYWxVbml0OjpZZWFyLAorICAg
IFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9yYWxVbml0OjpXZWVrLAorICAgIFRlbXBv
cmFsVW5pdDo6RGF5LAorfTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOwor
CisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xp
bWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2Fs
bG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9
IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZChkdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRp
bWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRp
dGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJf
cyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0
aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYw
MTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoLWR1
cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9y
dGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCAqbmV3RXhhY3RU
aW1lKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisg
ICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5zdGFudC0+ZGlmZmVy
ZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1
cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RG
TW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBv
cmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJf
cyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJbnN0YW50Ojp0b0lu
c3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgPSBvdGhlci0+
ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3Rh
bnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90
eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgSVNPODYw
MTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBv
dGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQtPmV4YWN0VGltZSgp
ID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5zdGFudC0+dG9T
dHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvSlNPTiBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3Ry
aW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBhIEpTQnVpbHRpbj8K
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9M
b2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7
CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxEYXRlVGltZUZvcm1h
dDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBmb3JtYXR0ZXItPmlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGltZUZvcm1hdCB0byB1
c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RU
aW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBJ
bnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfcyk7Cit9CisKK0pT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9j
aFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNv
bmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3Jh
bEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5z
dGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNy
b3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9iYWxP
YmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRzKCkpKSk7Cit9CisK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBp
bnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIxNDY5ODk3OGI4YzA3
ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGZmMGJjZmRjZjgyZDIyMWQxZWNiODVhOGMxYjQ2YjY1
MWI0ZGI3MzUuLjg5NDZhMGNjNjEwNDg0Zjg4MjRmNWNmZGU3Y2Y0YjczOTg1YzlkNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAg
LTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVQ
cm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlvbkNv
bnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVtcG9yYWxE
dXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xvYmFs
T2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwog
fQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBKU09i
amVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpz
Q2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkp
KTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZt
LCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVj
dCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2ICs5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAgQ2FsZW5kYXIgICAg
ICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVhdGVJbnN0YW50Q29u
c3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAg
ICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNv
bnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAgLTM3NCw2ICszODUs
MTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8vIEZvcm1hdFNlY29u
ZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNv
bmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3JtYXRTZWNvbmRzU3Ry
aW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVk
IGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBpZiAocHJlY2lzaW9u
LnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVybjsKKworICAgIGJ1
aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAgZm9ybWF0U2Vjb25k
c1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24ucHJlY2lzaW9uKTsK
K30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAoIHVuaXQg
KQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtbWF4
aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkKQEAgLTQzNSw2
ICs0NTcsNDMgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlIHgsIGRvdWJs
ZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQoreworICAgIHJldHVy
biB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggSW50MTI4
CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50MTI4IGluY3JlbWVu
dCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9PSAxKQorICAgICAg
ICByZXR1cm4geDsKKworICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNyZW1lbnQ7CisgICAg
SW50MTI4IHJlbWFpbmRlciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFyZW1haW5kZXIpCisg
ICAgICAgIHJldHVybiB4OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVyIDwgMDsKKyAgICBz
d2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgaWYg
KCFzaWduKQorICAgICAgICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgIHF1
b3RpZW50LS07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAg
ICAgIC8vICJoYWxmIHVwIGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAoYWJzKHJlbWFpbmRl
ciAqIDIpID49IGluY3JlbWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9IHNpZ24gPyAtMSA6
IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGllbnQgKiBpbmNyZW1l
bnQ7Cit9CisKIFRlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAgIHJldHVybiBpbnRs
T3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgZ2xvYmFsT2Jq
ZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggNzkxNTc5OGNkYjk4YWI3NDU4M2I4
YzhhYzM2YTU1ZDFiNDVmMWMxNC4uYWIzYjI5MzNmNTNhOGNhNmQ2NjFkMjZmNmQ3MTliNzc5YzJk
NjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUg
PHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMTA1LDkgKzEwNiwxMSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0ZW1wb3JhbEZyYWN0
aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAogUHJlY2lzaW9uRGF0
YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlv
bnMpOwogUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqLCBSb3VuZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rp
b24oU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1cGxlPFByZWNpc2lv
biwgdW5zaWduZWQ+KTsKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRl
ciYsIHVuc2lnbmVkIHNlY29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNpc2lvbkRhdGEpOwog
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVu
aXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGlu
Y2x1c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBp
bmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJ
bnQxMjgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVudW0gY2xhc3MgVGVt
cG9yYWxPdmVyZmxvdyA6IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCAyZmFjNzM0MzU0ODllYjcwZDRkOTZlOGQyOWIzNGJkM2I2OGRi
OGNmLi45Y2Y1ZmVhMDE5ODQ5ZGI2ZTY2MDkxMGJiOTQ1MWNkMjdjMjVmYmM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAKICNpbmNsdWRlICJT
eW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAi
VGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgog
I2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgpAQCAtMTU5Nyw2ICsxNTk4LDcgQEAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxJbnN0YW50KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxh
aW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFs
VGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IGJkZjQzMWU4NGVmMDk0ODU2YmMwMjczMGM0MGZmZTZlZGFhNWMxZDYu
LjZmZTQ2NzQwNWJiYjQ3NGVjMjIzZDY5YjQ4MWIxOGQ2ZjBhZDNkOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMTg3LDYgKzE4Nyw3IEBAIGNsYXNzIFJlZ0V4cDsKICNlbmRp
ZgogY2xhc3MgU3ltYm9sOwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2NsYXNzIFRlbXBvcmFs
SW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MDEsNiArNjAyLDcgQEAg
cHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBlZmFiNGFkM2JjOWY3MGQ2N2ViNjIzZDA3MzE2
MTA5Mjk5OGQzZTM0Li45YzFhNWZjNzQyNDE4NWRkMjk3YTAxYmVkYmZjYTAyY2JlZjE5NTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTI5MSwxMiArMjkxLDE4IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3Ry
dWN0IEFyaXRobWV0aWNPcGVyCiAgICAgc3RhdGljIGlubGluZSBib29sIGFkZChMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICNp
ZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAg
ICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbHNlCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXpl
b2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAg
ICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICB9
CisjZW5kaWYKKyNlbmRpZgogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAg
ICAgICAgICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmICgoc3RkOjpudW1l
cmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLSByaHMpIDwgbGhzKQpAQCAtMzA5LDE4ICsz
MTUsMjMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBS
ZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfSAvLyBpZiB0aGUgc2ln
bnMgZG8gbm90IG1hdGNoIHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJl
c3VsdCA9IGxocyArIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAK
ICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUm
IHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIENPTVBJTEVSKEdDQ19DT01Q
QVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5f
c3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKKyNp
ZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXplb2YoTEhTKSA8PSBz
aXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMpIDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNl
bmRpZgorICAgICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOworICAgICAgICAgICAgaWYgKF9fYnVp
bHRpbl9zdWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAg
ICAgICAgIGlmICghc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAgICAgIGlmIChsaHMg
Pj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJl
c3VsdFR5cGU+OjptYXgoKSArIHJocykKQEAgLTMzMiwxOCArMzQzLDI2IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFy
aXRobWV0aWNPcGVyCiAgICAgICAgIH0gLy8gaWYgdGhlIHNpZ25zIG1hdGNoIHRoaXMgb3BlcmF0
aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJlc3VsdCA9IGxocyAtIHJoczsKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbXVs
dGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9S
RVRVUk4KICAgICB7CiAjaWYgVVNFKE1VTF9PVkVSRkxPVykKLSAgICAgICAgUmVzdWx0VHlwZSB0
ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXAp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisgICAgICAgIC8vIERvbid0IHVzZSB0aGUgYnVpbHRp
biBpZiB0aGUgaW50MTI4IHR5cGUgaXMgV1RGOjpbVV1JbnQxMjhJbXBsLgorICAgICAgICAvLyBB
bHNvIGRvbid0IHVzZSB0aGUgYnVpbHRpbiBmb3IgX19bdV1pbnQxMjhfdCBvbiBDbGFuZy9MaW51
eC4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MDQKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5V
WCkpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90
KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAg
ICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJm
bG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFI
QVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKSkKKyAgICAgICAg
fQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKHNpZ25zTWF0Y2gobGhzLCByaHMpKSB7CiAg
ICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAobGhzICYmIChz
dGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxocykgPCByaHMpCkBAIC0z
NjUsNyArMzg0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBl
bmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfQogICAgICAg
ICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAg
fQogCiAgICAgc3RhdGljIGlubGluZSBib29sIGRpdmlkZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1
bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgpAQCAtMzg1LDQ3ICs0MDMsNjYgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBl
PiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAvLyBMSFMgYW5kIFJIUyBhcmUgdW5zaWduZWQg
dHlwZXMgc28gYm91bmRzIGNoZWNrcyBhcmUgbmljZSBhbmQgZWFzeQogICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VO
VVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCiAgICAgICAg
IFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGhz
LCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0
ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAgICBSZXN1bHRUeXBl
IHRlbXAgPSBsaHMgKyByaHM7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisjaWYgIUhB
VkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9m
KHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYK
KyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVt
cDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAg
ICB9CisjZW5kaWYKKyNlbmRpZgorICAgICAgICB0ZW1wID0gbGhzICsgcmhzOwogICAgICAgICBp
ZiAodGVtcCA8IGxocykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0
ID0gdGVtcDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0
aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkg
V0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQog
ICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJm
bG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAgICAgUmVz
dWx0VHlwZSB0ZW1wID0gbGhzIC0gcmhzOworI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQor
I2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMpIDw9
IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkgewor
I2VuZGlmCisgICAgICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMsIHJocywg
JnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkK
KyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgdGVtcCA9IGxocyAtIHJoczsKICAg
ICAgICAgaWYgKHRlbXAgPiBsaHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5
cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVTRShNVUxfT1ZFUkZM
T1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxf
b3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorICAgICAg
ICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gaWYgdGhlIGludDEyOCB0eXBlIGlzIFdURjo6SW50
MTI4SW1wbC4KKyAgICAgICAgLy8gQWxzbyBkb24ndCB1c2UgdGhlIGJ1aWx0aW4gZm9yIF9faW50
MTI4X3Qgb24gQ2xhbmcvTGludXguCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MubGx2bS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisjaWYgIUhBVkUoSU5UMTI4X1QpIHx8IChDT01QSUxF
UihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMp
IDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkg
eworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAo
X19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5HKSAmJiBP
UyhMSU5VWCkpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAgICAgICAgIGlmICghbGhzIHx8
ICFyaHMpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQzNCw3ICs0NzEsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBS
SFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJl
dHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIGRpdmlk
ZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVS
TgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4ZWFiYTQ2NmI2ZTZjMGFkNjZkYzAyZjUyNTc0
MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRlZTQ4NTUzNjE3ZmNhMDZkOGQ3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5o
CkBAIC0zODgsNiArMzg4LDExIEBAIGlubGluZSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIo
aW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAgICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAK
K2lubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBz
ZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1Blckhv
dXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNv
bmQgKyBtcyk7Cit9CisKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25k
IChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklWQVRFIExvY2FsVGltZU9mZnNldCBjYWxjdWxh
dGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0luTWlsbGlzZWNvbmRzLCBUaW1lVHlwZSA9IFVU
Q1RpbWUpOwogCkBAIC00MTAsNiArNDE1LDcgQEAgdXNpbmcgV1RGOjptc1RvSG91cnM7CiB1c2lu
ZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJNaW51dGU7CiB1c2lu
ZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6
OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7CiB1c2luZyBXVEY6
OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3
ZDE2M2Y2YzYzNGZiNWQ2MDA2NTE3OTQ2YmVhMjAzMGY5NjBkMWRiLi4xOWJkNDE2NjY0Mjc0YTZl
MzcwMTQwYzJlYWY0ZDllMDkwYTJjNjhmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEwLTI1ICBQaGls
aXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBs
ZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChpbnN0YW50cy5mb3JFYWNoKToKKyAgICAgICAgKHNob3VsZFRocm93
Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKGNvbnN0Lm1heFZhbHVlLm5ldy5UZW1w
b3JhbC5JbnN0YW50KToKKyAgICAgICAgKHNob3VsZEJlLmVwb2NoLnN1YnRyYWN0KToKKyAgICAg
ICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOiBObyBuZWVkIHRvIGlnbm9yZSBhbGwgVGVtcG9yYWwu
SW5zdGFudCB0ZXN0cworICAgICAgICAgIGFueW1vcmUsIG9ubHkgdGhlIG9uZXMgZm9yIHRoZSB1
bmltcGxlbWVudGVkIG1ldGhvZHMuCisKIDIwMjEtMTAtMjQgIEFsZXhleSBTaHZheWthICA8YXNo
dmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKCkgc2hvdWxkIHVzZSBwcm90b3R5cGUncyBnbG9iYWwgb2JqZWN0CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzIGIvSlNUZXN0cy9zdHJl
c3MvdGVtcG9yYWwtaW5zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGI3YTViNmNhMDU5MzRhNjQ1N2Q2
ZjU2ZDlkNWM1YjU0MWUyYTgyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVt
cG9yYWwtaW5zdGFudC5qcwpAQCAtMCwwICsxLDQwNyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkTm90QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgPT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGEgdmFsdWUgdG8gYmUgZGlm
ZmVyZW50IGZyb20gJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3Nh
Z2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAgICAgICAgICAgaWYg
KCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2ggJHttZXNzYWdlfSFg
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciks
IG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBlcG9jaAoreworICAgIGNvbnN0
IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgwbiksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMCksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hOYW5vc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3MC0wMS0wMVQwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGlu
c3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDApOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAwKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC50b1N0cmluZygpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC50b0pTT04oKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisK
Ky8vIHBvc2l0aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAg
ICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAg
ICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDFfMDAwXzAwMF8wMDApLAor
ICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygxXzAwMF8wMDBf
MDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRz
KDFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaE5hbm9zZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpLAorICAgIF07CisgICAg
aW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoU2Vjb25kcywgMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hNaWxsaXNlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBf
MDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcyMDAxLTA5
LTA5VDAxOjQ2OjQwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjAw
MS0wOS0wOVQwMTo0Njo0MFonKTsKKyAgICB9KTsKK30KKworLy8gbmVnYXRpdmUgZXBvY2ggdmFs
dWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3Rh
bnQoLTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzKC0xXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAw
XzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKC0x
XzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTkzOC0wNC0yNFQyMjoxMzoyMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2go
KGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIC0x
XzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25k
cywgLTFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
Y3Jvc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7Cisg
ICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBa
Jyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTM4LTA0LTI0VDIyOjEz
OjIwWicpOworICAgIH0pOworfQorCisvLyBtYXhpbnQ2NCBlcG9jaCB2YWx1ZQoreworICAgIGNv
bnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg5MjIzMzcyMDM2
ODU0Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29u
ZHMoOTIyMzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpLAorICAgIF07CisgICAgaW5zdGFudHMu
Zm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vj
b25kcywgOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNl
Y29uZHMsIDkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlj
cm9zZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hOYW5vc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LnRvU3RyaW5nKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYu
ODU0Nzc1ODA3WicpOworICAgIH0pOworfQorCisvLyBtaW5pbnQ2NCBlcG9jaCB2YWx1ZQorewor
ICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtOTIy
MzM3MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5h
bm9zZWNvbmRzKC05MjIzMzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyksCisgICAgXTsKKyAgICBp
bnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hTZWNvbmRzLCAtOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWxsaXNlY29uZHMsIC05MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pY3Jvc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0
NTIyNDE5MlonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE2NzctMDkt
MjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicpOworICAgIH0pOworfQorCisvLyBtYXggSW5zdGFudCBy
YW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5z
dGFudCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hTZWNvbmRzKDg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDApLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcyg4NjQwMF8wMDAwXzAw
MDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNv
bmRzKDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50
cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hT
ZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2No
TWlsbGlzZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAw
XzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnKzI3NTc2
MC0wOS0xM1QwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwg
JysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbiBJbnN0YW50
IHJhbmdlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5J
bnN0YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKC04NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMCks
CisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC04NjQwMF8w
MDAwXzAwMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5h
bm9zZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpLAorICAgIF07CisgICAg
aW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoU2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3Rh
bnQuZXBvY2hNaWxsaXNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAw
bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTg2NDAwXzAw
MDBfMDAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5n
KCksICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LnRvSlNPTigpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8g
dG9vIGxhcmdlCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQwMF8w
MDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgL1xiODY0MDAwMDAwMDAwMDAwMDAw
MDAwMVxiLyk7CisvLyB0b28gc21hbGwKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5J
bnN0YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgLy04NjQw
MDAwMDAwMDAwMDAwMDAwMDAxXGIvKTsKKy8vIGxhcmdlciB0aGFuIG1heGludDEyOAorc2hvdWxk
VGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoMW4gPDwgMTI5biksIFJhbmdlRXJyb3Is
IC9cYjY4MDU2NDczMzg0MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBzbWFs
bGVyIHRoYW4gbWluaW50MTI4CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFu
dCgtMW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC8tNjgwNTY0NzMzODQxODc2OTI2OTI2NzQ5MjE0
ODYzNTM2NDIyOTEyXGIvKTsKKy8vIGRvZXMgbm90IGNyYXNoIHdoZW4gYmlnaW50IGxvbmdlciB0
aGFuIG1heGludDMyIGRpZ2l0cworc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3Rh
bnQoQmlnSW50KCc5Jy5yZXBlYXQoMjE0NzQ4MzY0NykpKSwgUmFuZ2VFcnJvcik7CisvLyBjb25z
dHJ1Y3RzIGZyb20gc3RyaW5nCitzaG91bGRCZShuZXcgVGVtcG9yYWwuSW5zdGFudCgnMCcpLmVw
b2NoTmFub3NlY29uZHMsIDBuKTsKKy8vIHRocm93cyBvbiBudW1iZXIKK3Nob3VsZFRocm93KCgp
ID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDApLCBUeXBlRXJyb3IpOworLy8gdGhyb3dzIG9uIHN0
cmluZyB0aGF0IGRvZXMgbm90IGNvbnZlcnQgdG8gQmlnSW50CitzaG91bGRUaHJvdygoKSA9PiBu
ZXcgVGVtcG9yYWwuSW5zdGFudCgnYWJjMTIzJyksIFN5bnRheEVycm9yKTsKKworLy8gSW5zdGFu
dC5mcm9tKGluc3RhbnQpIGlzIG5vdCB0aGUgc2FtZSBvYmplY3QKK3sKKyAgICBjb25zdCBpbnN0
ID0gVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDIwLTAyLTEyVDExOjQyKzAxOjAwW0V1cm9wZS9B
bXN0ZXJkYW1dJyk7CisgICAgc2hvdWxkTm90QmUoVGVtcG9yYWwuSW5zdGFudC5mcm9tKGluc3Qp
LCBpbnN0KTsKK30KKworLy8gdG9TdHJpbmcKKworeworICAgIGNvbnN0IGkxID0gVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzWicpOworICAgIGNvbnN0IGkyID0gVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwWicpOworICAgIGNvbnN0IGkzID0g
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CisKKyAg
ICAvLyBkZWZhdWx0IGlzIHRvIGVtaXQgc2Vjb25kcyBhbmQgZHJvcCB0cmFpbGluZyB6ZXJvcyBh
ZnRlciB0aGUgZGVjaW1hbCcKKyAgICBzaG91bGRCZShpMS50b1N0cmluZygpLCAnMTk3Ni0xMS0x
OFQxNToyMzowMFonKTsKKyAgICBzaG91bGRCZShpMi50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQx
NToyMzozMFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZygpLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjM0WicpOworCisgICAgLy8gdHJ1bmNhdGVzIHRvIG1pbnV0ZQorICAgIFtpMSwgaTIs
IGkzXS5mb3JFYWNoKChpKSA9PiBzaG91bGRCZShpLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAn
bWludXRlJyB9KSwgJzE5NzYtMTEtMThUMTU6MjNaJykpOworCisgICAgLy8gb3RoZXIgc21hbGxl
c3RVbml0cyBhcmUgYWxpYXNlcyBmb3IgZnJhY3Rpb25hbCBkaWdpdHMKKyAgICBzaG91bGRCZShp
My50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJh
Y3Rpb25hbFNlY29uZERpZ2l0czogMCB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBz
bWFsbGVzdFVuaXQ6ICdtaWxsaXNlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogMyB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVu
aXQ6ICdtaWNyb3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0
czogNiB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICduYW5v
c2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA5IH0pKTsK
KworICAgIC8vIHRydW5jYXRlIG9yIHBhZCB0byAyIHBsYWNlcworICAgIHsKKyAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMiB9OworICAgICAgICBzaG91
bGRCZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAuMDBaJyk7Cisg
ICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4wMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyWicpOworICAgIH0KKyAgICAvLyBwYWQgdG8gNyBwbGFjZXMKKyAgICB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDcgfTsK
KyAgICAgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIz
OjAwLjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMy50b1N0
cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDAwMFonKTsKKyAgICB9CisK
KyAgICAvLyByb3VuZCB0byBuZWFyZXN0CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFs
bGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYt
MTEtMThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vj
b25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzWicpOworICAgIC8vIHJvdW5kIHVwCisgICAgc2hvdWxkQmUoaTIudG9TdHJp
bmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5
NzYtMTEtMThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFs
U2Vjb25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTI0WicpOworICAgIC8vIHJvdW5kIGRvd24KKyAgICBbJ2Zsb29yJywgJ3RydW5jJ10u
Zm9yRWFjaCgocm91bmRpbmdNb2RlKSA9PiB7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5n
KHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQx
NToyM1onKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25k
RGlnaXRzOiAzLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKTsK
KyAgICB9KTsKKworICAgIHsKKyAgICAgICAgLy8gcm91bmRpbmcgZG93biBpcyB0b3dhcmRzIHRo
ZSBCaWcgQmFuZywgbm90IHRvd2FyZHMgMSBCQ0UKKyAgICAgICAgY29uc3QgaTQgPSBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJy0wMDAwOTktMTItMTVUMTI6MDA6MDAuNVonKTsKKyAgICAgICAgc2hv
dWxkQmUoaTQudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnLCByb3VuZGluZ01vZGU6
ICdmbG9vcicgfSksICctMDAwMDk5LTEyLTE1VDEyOjAwOjAwWicpOworCisgICAgICAgIC8vIHJv
dW5kaW5nIGNhbiBhZmZlY3QgYWxsIHVuaXRzCisgICAgICAgIGNvbnN0IGk1ID0gVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTk5OVonKTsKKyAgICAgICAg
c2hvdWxkQmUoaTUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA4LCByb3VuZGlu
Z01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwMDAwMDBaJyk7
CisgICAgfQorfQorCisvLyBsZWFwIHNlY29uZCBpcyBjb25zdHJhaW5lZAorc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDE2LTEyLTMxVDIzOjU5OjYwWicpfWAsICcyMDE2LTEy
LTMxVDIzOjU5OjU5WicpOworLy8gdmFyaWFudCB0aW1lIHNlcGFyYXRvcnMKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOCAxNToyM1onKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzowMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0x
MS0xOHQxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIHZhcmlhbnQgVVRD
IGRlc2lnbmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNToyM3onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIGFueSBudW1iZXIgb2Yg
ZGVjaW1hbCBwbGFjZXMKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0x
MS0xOFQxNToyMzozMC4xWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMw
LjEyM1onKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQx
NToyMzozMC4xMjM0WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7CitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2WicpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyMzQ1NlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
MzQ1NjdaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzNDU2NzhaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2NzhaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzNDU2Nzg5WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8vIHZh
cmlhbnQgZGVjaW1hbCBzZXBhcmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNToyMzozMCwxMlonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlon
KTsKKy8vIHZhcmlhbnQgbWludXMgc2lnbgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyXHUyMjEyMDI6MDAnKX1gLCAnMTk3Ni0xMS0xOFQx
NzoyMzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnXHUyMjEy
MDA5OTk5LTExLTE4VDE1OjIzOjMwLjEyWicpfWAsICctMDA5OTk5LTExLTE4VDE1OjIzOjMwLjEy
WicpOworLy8gbWl4dHVyZSBvZiBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToy
MzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcxOTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicp
Oworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNTIzMzAuMSsw
MDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcr
MDAxOTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVon
KTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNToy
MzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQx
NTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAwMDAnKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworLy8gb3B0aW9uYWwgcGFydHMKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMCswMCcpfWAsICcxOTc2
LTExLTE4VDE1OjIzOjMwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTc2LTExLTE4VDE1WicpfWAsICcxOTc2LTExLTE4VDE1OjAwOjAwWicpOworLy8gaWdub3JlcyBh
bnkgc3BlY2lmaWVkIGNhbGVuZGFyCisvLyBGSVhNRTogcGFyc2UgY2FsZW5kYXIKKy8vIHNob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3
ODlaW3UtY2E9ZGlzY29yZF0nKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7
CisvLyBubyBqdW5rIGF0IGVuZCBvZiBzdHJpbmcKK3Nob3VsZFRocm93KCgpID0+IFRlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaanVuaycpLCBSYW5n
ZUVycm9yKTsKKworLy8gRm9yIGNvbnZlbmllbmNlIGluIHNldmVyYWwgdGVzdHMKK2NvbnN0IGVw
b2NoID0gbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pOworY29uc3QgbWluVmFsdWUgPSBuZXcgVGVt
cG9yYWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbik7Citjb25zdCBtYXhW
YWx1ZSA9IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4p
OworCisvLyBhZGQoKQorCit7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgaG91cnM6IDEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgMzYwMF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2No
LmFkZCh7IGhvdXJzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMzYwMF8wMDBfMDAwXzAwMG4p
OworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbnV0ZXM6IDEgfSkuZXBvY2hOYW5vc2Vjb25k
cywgNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaW51dGVzOiAt
MSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBzZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBu
KTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNv
bmRzLCAtMV8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbGxpc2Vj
b25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBtaWxsaXNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8w
MDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWNyb3NlY29uZHM6IDEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgMV8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWNyb3NlY29u
ZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2No
LmFkZCh7IG5hbm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFuKTsKKyAgICBzaG91
bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFu
KTsKK30KKworeworICAgIC8vIG1heCBkdXJhdGlvbiB0aGF0IGNhbiBiZSBhZGRlZCB0byBhbnkg
SW5zdGFudAorICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IGhvdXJzOiA0OF8wMDAwXzAwMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWF4VmFsdWUuYWRkKHsgaG91cnM6IC00OF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vj
b25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUu
YWRkKHsgbWludXRlczogMjg4MF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFs
dWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWludXRl
czogLTI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFu
b3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IHNlY29uZHM6IDE3MjgwMF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgLy8g
bm90ZSwgdW5zYWZlIGludGVnZXJzIGZyb20gaGVyZSBvbjsgdGhlIG11bHRpcGxpY2F0aW9uIHRv
IGNvbnZlcnQKKyAgICAvLyBtaWxsaXNlY29uZHMgYW5kIG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vj
b25kcyBzaG91bGQgdGFrZSBwbGFjZSBpbiB0aGUKKyAgICAvLyBiaWdpbnQgZG9tYWluLgorICAg
IHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pbGxpc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8w
MDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAg
c2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWlsbGlzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8w
MDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAg
c2hvdWxkQmUobWluVmFsdWUuYWRkKHsgbWljcm9zZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwXzAw
MF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWljcm9zZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAw
MF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG5hbm9zZWNvbmRzOiAxNzI4MDBfMDAwMF8w
MDAwXzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3Nl
Y29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG5hbm9zZWNvbmRzOiAtMTcyODAw
XzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9j
aE5hbm9zZWNvbmRzKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5nIDY0IGJpdHMKKyAgICBj
b25zdCBleHA2NCA9IDIgKiogNjQ7CisgICAgWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMn
LCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiBleHA2NCB9KSwgUmFu
Z2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTog
LWV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICB9KTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQo
eyBuYW5vc2Vjb25kczogZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywgMTg0NDY3NDQwNzM3MDk1
NTE2MTZuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczogLWV4cDY0IH0p
LmVwb2NoTmFub3NlY29uZHMsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNm4pOworfQorCit7CisgICAg
Ly8gb3ZlcmZsb3dpbmcgMTI4IGJpdHMKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25k
cycsICdtaWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJywgJ25hbm9zZWNvbmRzJ10uZm9yRWFj
aCgodW5pdCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5p
dF06IE51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJv
dygoKSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IC1OdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVy
cm9yKTsKKyAgICB9KTsKK30KKworLy8gc3VidHJhY3QoKQorCit7CisgICAgc2hvdWxkQmUoZXBv
Y2guc3VidHJhY3QoeyBob3VyczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMzYwMF8wMDBfMDAw
XzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgaG91cnM6IC0xIH0pLmVwb2No
TmFub3NlY29uZHMsIDM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0
cmFjdCh7IG1pbnV0ZXM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTYwXzAwMF8wMDBfMDAwbik7
CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaW51dGVzOiAtMSB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCA2MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsg
c2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMG4pOworICAgIHNo
b3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywg
MV8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWlsbGlzZWNv
bmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6IDEg
fSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJh
Y3QoeyBtaWNyb3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwbik7CisgICAg
c2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNv
bmRzLCAtMW4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IC0x
IH0pLmVwb2NoTmFub3NlY29uZHMsIDFuKTsKK30KKworeworICAgIC8vIG1heCBkdXJhdGlvbiB0
aGF0IGNhbiBiZSBhZGRlZCB0byBhbnkgSW5zdGFudAorICAgIHNob3VsZEJlKG1heFZhbHVlLnN1
YnRyYWN0KHsgaG91cnM6IDQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1
ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IGhv
dXJzOiAtNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFu
b3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWludXRlczogMjg4
MF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25k
cyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaW51dGVzOiAtMjg4MF8wMDAw
XzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAw
IH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNo
b3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDAgfSku
ZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgLy8gbm90
ZSwgdW5zYWZlIGludGVnZXJzIGZyb20gaGVyZSBvbjsgdGhlIG11bHRpcGxpY2F0aW9uIHRvIGNv
bnZlcnQKKyAgICAvLyBtaWxsaXNlY29uZHMgYW5kIG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25k
cyBzaG91bGQgdGFrZSBwbGFjZSBpbiB0aGUKKyAgICAvLyBiaWdpbnQgZG9tYWluLgorICAgIHNo
b3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWlsbGlzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAw
XzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogLTE3MjgwMF8wMDAw
XzAwMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAxNzI4MDBf
MDAwMF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5v
c2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6
IC0xNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUu
ZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBuYW5v
c2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRz
LCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0
cmFjdCh7IG5hbm9zZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKK30KKworeworICAgIC8v
IG92ZXJmbG93aW5nIDY0IGJpdHMKKyAgICBjb25zdCBleHA2NCA9IDIgKiogNjQ7CisgICAgWydo
b3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25k
cyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2gu
c3VidHJhY3QoeyBbdW5pdF06IGV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IC1leHA2NCB9KSwgUmFuZ2VFcnJv
cik7CisgICAgfSk7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczog
ZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7CisgICAg
c2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogLWV4cDY0IH0pLmVwb2NoTmFu
b3NlY29uZHMsIDE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxv
d2luZyAxMjggYml0cworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxp
c2Vjb25kcycsICdtaWNyb3NlY29uZHMnLCAnbmFub3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9
PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiBO
dW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IC1OdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVy
cm9yKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFt
bCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA5NjJkNTI0NjI1MjVhZmJiMjk2
ZDlhY2ZkNmQ4YTBhMTQ0ZjIwYjM0Li5hZWQ2MzRiMThmY2E2ZmE5MDk2NGM4ZTkxMmM3YWI2MzJm
M2IzMWU3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNU
ZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yMyw3ICsyMyw4IEBAIHNraXA6CiAgICAgLSBj
YWxsYWJsZS1ib3VuZGFyeS1yZWFsbXMKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudAor
ICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERh
dGVUaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90
b1pvbmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL05vdwogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0zNCw3ICszNSw4IEBAIHNraXA6CiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvWm9uZWREYXRlVGltZQogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0NhbGVuZGFy
Ci0gICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvSW5zdGFudAorICAgIC0gdGVzdC9pbnRsNDAy
L1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0gdGVzdC9p
bnRsNDAyL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZUlTTwogICAg
IC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL05vdwogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFs
L1BsYWluRGF0ZQogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL1BsYWluRGF0ZVRpbWUKQEAg
LTI0Nyw2ICsyNDksNyBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVy
YXRpb24vcHJvdG90eXBlL3RvU3RyaW5nL3NtYWxsZXN0dW5pdC1wbHVyYWxzLWFjY2VwdGVkLmpz
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwv
Y2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvdW5pdC1wbHVyYWxzLWFjY2VwdGVkLmpzCisgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy9zbWFs
bGVzdHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvUGxhaW5UaW1lL2NvbXBhcmUvY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvZnJvbS9jYWxlbmRhci10ZW1wb3JhbC1v
YmplY3QuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5
cGUvZXF1YWxzL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwpAQCAtMjcyLDYgKzI3NSwxMyBA
QCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBl
L3N1YnRyYWN0L29yZGVyLW9mLW9wZXJhdGlvbnMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9kYXRldW50aWwtZmllbGQuanMKIAorICAg
ICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5UaW1lWm9uZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3Nl
Y29uZHNmb3Itbm9uLWludGVnZXIuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0lu
c3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9y
LW91dC1vZi1yYW5nZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9w
cm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itd3Jvbmct
dHlwZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUv
dG9TdHJpbmcvdGltZXpvbmUtc3RyaW5nLWRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS5qcworCiAgICAg
IyBEZXBlbmRzIG9uIFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0R1cmF0aW9uL2NvbXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLW5lZ2F0
aXZlLWVwb2NobmFub3NlY29uZHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1
cmF0aW9uL2NvbXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNl
dG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCkBAIC0yOTksNiArMzA5LDExIEBAIHNraXA6
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwv
cmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9y
LW5vbi1pbnRlZ2VyLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9w
cm90b3R5cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNl
dG5hbm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10
aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci13cm9uZy10eXBlLmpzCisgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGlt
ZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9mcm9tL2FyZ3VtZW50
LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQv
cHJvdG90eXBlL2VxdWFscy9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9zaW5jZS9hcmd1bWVudC16b25lZGRh
dGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlw
ZS91bnRpbC9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLW5lZ2F0aXZl
LWVwb2NobmFub3NlY29uZHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWlu
VGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFu
b3NlY29uZHNmb3Itbm9uLWludGVnZXIuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L1BsYWluVGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zm
c2V0bmFub3NlY29uZHNmb3Itb3V0LW9mLXJhbmdlLmpzCkBAIC0zMzQsNSArMzQ5LDYgQEAgc2tp
cDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3Vu
ZC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvRHVyYXRpb24vcHJvdG90eXBlL3JvdW5kL3JvdW5kLW5lZ2F0aXZlLXJlc3VsdC5qcwogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3N1YnRyYWN0L2Jh
bGFuY2UtbmVnYXRpdmUtcmVzdWx0LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9J
bnN0YW50L3Byb3RvdHlwZS91bnRpbC9pbnN0YW50LXN0cmluZy5qcwogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS9zaW5jZS9iYWxhbmNlLW5lZ2F0aXZl
LXRpbWUtdW5pdHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9w
cm90b3R5cGUvdW50aWwvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442434</attachid>
            <date>2021-10-25 16:02:31 -0700</date>
            <delta_ts>2021-10-25 16:12:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211025160230.patch</filename>
            <type>text/plain</type>
            <size>141453</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Y2Y4MDVkN2U4NDk0NDQwZTlhN2RmNWY2NTI0NGFkZTNmMzAxNjE5Li4yOGEwZTJhNzQzNGNlNDJj
NzQzYjEyZmUyMzhjODE0ZDYxZWNiMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0yNSAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFp
bEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdWzMyYml0XSBEb24ndCBzcGVjdWxhdGUgQ2Vs
bCBvbiBQdXRCeVZhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA3YmQ4OWU4ODY1YmZlZmU3ZGJmZGM2YmUwZDRkYzgwZWViYTgw
Y2FjLi4yNjFiY2Y3NDc5MmIyMmY3NWUxNjg2ZWZjYzA3ZGZmYWFhZDM1NGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEwLTI1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlh
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaDogRG9uJ3QgdXNlIGJ1aWx0aW4gb3BlcmF0aW9ucyBpZiBfX2ludDEyOCBpcwor
ICAgICAgICAgIGJlaW5nIGVtdWxhdGVkIHVzaW5nIFdURjo6SW50MTI4LiBBbHNvIHdvcmsgYXJv
dW5kIENsYW5nL0xpbnV4IGJ1ZworICAgICAgICAgIHdoZXJlIF9fYnVpbHRpbl9tdWxfb3ZlcmZs
b3coKSBkb2Vzbid0IHdvcmsgb24gX19pbnQxMjguCisgICAgICAgICAgU2VlIGh0dHBzOi8vYnVn
cy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDQKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGgu
aDoKKyAgICAgICAgKFdURjo6dGltZVRvTVMpOiBNb3ZlZCBmcm9tIEpTRGF0ZU1hdGguaC4KKwog
MjAyMS0xMC0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBBZG9wdCBicmlkZ2VfY2FzdCBhbmQgbWFrZVZlY3RvciBpbiBhIGZldyBtb3JlIHBsYWNl
cywgaW5jbHVkaW5nIGNhc2VzIHdoZXJlIGFkb3B0Q0YvTlMgd2FzIHVzZWQgaW5jb3JyZWN0bHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4YjkxODJjZWQxMDE5NTFhOGQw
MDViMDZiN2UxN2MxOTYxYWRhMDc2Li45MmJmOTU2M2JmOWRmOWI4M2VjZTg1MzQyNWIyOTU3NmEz
MTI2ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEz
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRp
b25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50
aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93
LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA1YzQ3YWY5OWQ0MTc4YjJj
OWU2NGQyNTVlOGU5MzNjMDgwMTI0MWQ2Li43NjgxMzBiMGI3MDNlYWUyMDU2MTgzYWI2OGE3NDM1
NmYyNzdmODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBv
cmFsTm93LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKICQo
UFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCAxMTIyOWQ1N2IyYjNiZTg4ZjE4MGNjNmU4MDcxNzM1ZWU0Y2ZhOWVjLi42
NWY0OTZmMjgyYzcxMDc4OTYwMmM1OGE1NWYxZmNlOThkYmRkMmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBA
IC03Miw2ICs3Miw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL1RlbXBvcmFsTm93Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxPYmplY3QubHV0LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDlhNjM5MjM3ZjhiMjlkNmNmZTg4YzZjYmMyMWQ2YTkyYzViNzMzOTIuLjRlY2FlM2Yw
NTk4MTM5OGNiZjYzYTQ2NzllZThkZmNmZWI0Njg2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMDAsNiArMjAwLDggQEAgT0JKRUNUX0xVVF9IRUFE
RVJTID0gXAogICAgIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBv
cmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZS5sdXQuaCBcCisgICAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggXAorICAg
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0Lmgg
XAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKICAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWM1NmMxMGVh
YTBlNGYwNmEyZTMwZTNhYWI2NDZhMGYwZGJiNjhjOC4uYWFlMTBiYzRiMzY1ZmM2N2FlZmU3Mjcx
NjBkMGI1MzMyZTE1NmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NzQs
NiArMTk3NCwxMSBAQAogCQlFM0ZGNzUzMzFEOUNFQTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVy
U2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkMxMkVGMjk0
RTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3Vy
Y2VQcm92aWRlckNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNkQ2N0Q0MDI2
RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVt
cG9yYWxJbnN0YW50LmggKi87IH07CisJCUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmggKi87IH07CisJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaCAqLzsgfTsKKwkJRjZENjdENDcyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVG
IC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0
Lmx1dC5oICovOyB9OwogCQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JN
YWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MDQxNTUyMjUyRUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMDVGQUZEMUZFNENFREEw
MDA5MzIzMCAvKiBEZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MkQ2QTExMUZCRDQ5MUQwMDAyNDVGNCAv
KiBEZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKQEAgLTUzNzAsNiArNTM3NSwx
NCBAQAogCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0UwMjU1
NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NKU1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OworCQlGNkQ2N0QzOTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YWxJbnN0YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNCMjZGOTAy
RTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNkQ2N0QzRDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3
RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjZGMTUwMTgyNjkzRDMzRDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsTm93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDFBMjY5M0QzM0UwMDRCOThFRiAvKiBU
ZW1wb3JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3Jh
bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEwNCw2ICs3MTE3LDgg
QEAKIAkJCQk5OTZCNzMxNDFCRDlGQTJDMDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5o
ICovLAogCQkJCUUzQzQ2MzA1MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IubHV0LmggKi8sCiAJCQkJRTNDNDYzMDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRjZENjdENDUyNkY5MTMwQTAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUY2RDY3RDQ2
MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovLAog
CQkJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8sCiAJCQkJQUQyRkND
MEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3Iu
bHV0LmggKi8sCkBAIC04MDczLDYgKzgwODgsMTIgQEAKIAkJCQlBM0M3RURCNDI2QjBEQjM3MDA0
QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTNDN0VEQjUy
NkIwREIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwICovLAogCQkJ
CUEzQzdFREIwMjZCMERCMzYwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgg
Ki8sCisJCQkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAg
Ki8sCisJCQkJRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICov
LAorCQkJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5jcHAgKi8sCisJCQkJRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yLmggKi8sCisJCQkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAgKi8sCisJCQkJRjZENjdEM0UyNkY5MDJFODAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oICovLAogCQkJCUY2RjE1MDFCMjY5M0Qz
M0UwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5jcHAgKi8sCiAJCQkJRjZGMTUwMTgyNjkzRDMzRDAw
NEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8sCiAJCQkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5OEVG
IC8qIFRlbXBvcmFsT2JqZWN0LmNwcCAqLywKQEAgLTEwODE2LDYgKzEwODM3LDExIEBACiAJCQkJ
QTNDN0VEQjkyNkIwREIzODAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUEzQzdFREJBMjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQzdFREI2MjZCMERCMzgwMDRDMzRDNSAv
KiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0
MDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RDY3RDQ0MjZG
OTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY2RDY3RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyog
VGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3RTI2RTg2N0I4
MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZG
RDdCMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBkZDhjYjYyNzI0MWJl
ODhjZWVmMDc0NTljODVlZjNjOGE5ZjhjODM3Li4yZDVmYzRmMzU0YmJmZDRkOTkxNGNiMmFjMjE3
MDUxZjQzMWYxMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIwLDYgKzEw
MjAsOSBAQCBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiBydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKK3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50LmNwcAorcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKK3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCA1OWIx
YzdlZjViMzkzZDJkYTQ5ZTQyNjY5OTQ0MDM2Njc2OGI5YTUwLi40MTA5MDQwODI3NThhMTNjNjRi
NTZhN2JkZTRiYjc4ODlkMjVjY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JU084NjAxLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
U084NjAxLmNwcApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgog
I2luY2x1ZGUgIlBhcnNlSW50LmgiCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgpAQCAtODc3LDYgKzg3OSwzNyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8
VGltZQogICAgIH0pOwogfQogCitzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50
KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jcHJvZC1UZW1wb3JhbEluc3RhbnRTdHJpbmcKKyAgICAvLyBUZW1wb3JhbEluc3Rh
bnRTdHJpbmcgOgorICAgIC8vICAgICBEYXRlIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAv
LyAgICAgRGF0ZSBEYXRlVGltZVNlcGFyYXRvciBUaW1lU3BlYyBUaW1lWm9uZU9mZnNldFJlcXVp
cmVkCisKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGlt
ZVpvbmVPZmZzZXRSZXF1aXJlZAorICAgIC8vIFRpbWVab25lT2Zmc2V0UmVxdWlyZWQgOgorICAg
IC8vICAgICBUaW1lWm9uZVVUQ09mZnNldCBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb25fb3B0
CisKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBi
dWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiB7CisgICAgICAgIGF1dG8gZGF0ZXRp
bWUgPSBwYXJzZURhdGVUaW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghZGF0ZXRpbWUpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtkYXRlLCBtYXliZVRp
bWUsIG1heWJlVGltZVpvbmVdID0gZGF0ZXRpbWUudmFsdWUoKTsKKyAgICAgICAgaWYgKCFtYXli
ZVRpbWVab25lIHx8ICghbWF5YmVUaW1lWm9uZS0+bV96ICYmICFtYXliZVRpbWVab25lLT5tX29m
ZnNldCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAvLyBGSVhN
RTogcGFyc2UgY2FsZW5kYXIgYW5ub3RhdGlvbgorICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBQbGFpblRpbWUg
dGltZTsKKyAgICAgICAgaWYgKG1heWJlVGltZSkKKyAgICAgICAgICAgIHRpbWUgPSBtYXliZVRp
bWUudmFsdWUoKTsKKworICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG1heWJlVGltZVpvbmUtPm1f
eiA/IDAgOiAqbWF5YmVUaW1lWm9uZS0+bV9vZmZzZXQ7CisgICAgICAgIHJldHVybiB7IEV4YWN0
VGltZTo6ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGRhdGUueWVhcigpLCBkYXRlLm1vbnRoKCksIGRh
dGUuZGF5KCksIHRpbWUuaG91cigpLCB0aW1lLm1pbnV0ZSgpLCB0aW1lLnNlY29uZCgpLCB0aW1l
Lm1pbGxpc2Vjb25kKCksIHRpbWUubWljcm9zZWNvbmQoKSwgdGltZS5uYW5vc2Vjb25kKCksIG9m
ZnNldCkgfTsKKyAgICB9KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0dGltZXpvbmVvZmZzZXRzdHJpbmcKIFN0cmluZyBmb3Jt
YXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkKIHsKQEAgLTk2OSw1ICsxMDAy
LDEyOSBAQCBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24pCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK0V4YWN0VGltZSBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0Fu
ZE9mZnNldChpbnQzMl90IHksIHVpbnQ4X3QgbW9uLCB1aW50OF90IGQsIHVuc2lnbmVkIGgsIHVu
c2lnbmVkIG1pbiwgdW5zaWduZWQgcywgdW5zaWduZWQgbXMsIHVuc2lnbmVkIG1pY3JvcywgdW5z
aWduZWQgbnMsIGludDY0X3Qgb2Zmc2V0KQoreworICAgIEFTU0VSVCh5ID49IC05OTk5OTkgJiYg
eSA8PSA5OTk5OTkpOworICAgIEFTU0VSVChtb24gPj0gMSAmJiBtb24gPD0gMTIpOworICAgIEFT
U0VSVChkID49IDEgJiYgZCA8PSAzMSk7CisgICAgQVNTRVJUKGggPj0gMCAmJiBoIDw9IDIzKTsK
KyAgICBBU1NFUlQobWluID49IDAgJiYgbWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA+PSAwICYm
IHMgPD0gNTkpOworICAgIEFTU0VSVChtcyA+PSAwICYmIG1zIDw9IDk5OSk7CisgICAgQVNTRVJU
KG1pY3JvcyA+PSAwICYmIG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA+PSAwICYmIG5z
IDw9IDk5OSk7CisKKyAgICBkb3VibGUgZGF0ZURheXMgPSBkYXRlVG9EYXlzRnJvbTE5NzAoeSwg
bW9uIC0gMSwgZCk7CisgICAgZG91YmxlIHRpbWVNcyA9IHRpbWVUb01TKGgsIG1pbiwgcywgbXMp
OworICAgIGRvdWJsZSB1dGNNcyA9IGRhdGVEYXlzICogbXNQZXJEYXkgKyB0aW1lTXM7CisgICAg
SW50MTI4IHV0Y05zID0gc3RhdGljX2Nhc3Q8SW50MTI4Pih1dGNNcykgKiAxJzAwMCcwMDAgKyBt
aWNyb3MgKiAxMDAwICsgbnM7CisgICAgcmV0dXJuIEV4YWN0VGltZSB7IHV0Y05zIC0gb2Zmc2V0
IH07Cit9CisKK3VzaW5nIENoZWNrZWRJbnQxMjggPSBDaGVja2VkPEludDEyOCwgUmVjb3JkT3Zl
cmZsb3c+OworCitzdGF0aWMgQ2hlY2tlZEludDEyOCBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4
KGRvdWJsZSBuKQoreworICAgIC8vIEJhc2VkIG9uIF9fZml4ZGZ0aSgpIGFuZCBfX2ZpeHVuc2Rm
dGkoKSBmcm9tIGNvbXBpbGVyX3J0OgorICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xs
dm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0MTkyMjZhOTYwM2E3ZDgzYjFhMzEv
Y29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeGludF9pbXBsLmluYworICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9ibG9iL2YzNjcxZGU1NTAwZmYxZjgyMTA0
MTkyMjZhOTYwM2E3ZDgzYjFhMzEvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2ZwX2ZpeHVpbnRf
aW1wbC5pbmMKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNpZ25pZmljYW5kQml0cyA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzIC0gMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGludCBleHBvbmVudEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6ZGln
aXRzIC0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpkaWdpdHM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgZXhwb25lbnRCaWFzID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXhfZXhwb25lbnQgLSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgaW1wbGljaXRC
aXQgPSB1aW50NjRfdCB7IDEgfSA8PCBzaWduaWZpY2FuZEJpdHM7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBzaWduaWZpY2FuZE1hc2sgPSBpbXBsaWNpdEJpdCAtIHVpbnQ2NF90IHsg
MSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbk1hc2sgPSB1aW50NjRfdCB7
IDEgfSA8PCAoc2lnbmlmaWNhbmRCaXRzICsgZXhwb25lbnRCaXRzKTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ2NF90IGFic01hc2sgPSBzaWduTWFzayAtIHVpbnQ2NF90IHsgMSB9OworCisg
ICAgLy8gQnJlYWsgbiBpbnRvIHNpZ24sIGV4cG9uZW50LCBzaWduaWZpY2FuZCBwYXJ0cy4KKyAg
ICBjb25zdCB1aW50NjRfdCBiaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmbik7
CisgICAgY29uc3QgdWludDY0X3QgbkFicyA9IGJpdHMgJiBhYnNNYXNrOworICAgIGNvbnN0IGlu
dCBzaWduID0gYml0cyAmIHNpZ25NYXNrID8gLTEgOiAxOworICAgIGNvbnN0IGludCBleHBvbmVu
dCA9IChuQWJzID4+IHNpZ25pZmljYW5kQml0cykgLSBleHBvbmVudEJpYXM7CisgICAgY29uc3Qg
dWludDY0X3Qgc2lnbmlmaWNhbmQgPSAobkFicyAmIHNpZ25pZmljYW5kTWFzaykgfCBpbXBsaWNp
dEJpdDsKKworICAgIC8vIElmIGV4cG9uZW50IGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHpl
cm8uCisgICAgaWYgKGV4cG9uZW50IDwgMCkKKyAgICAgICAgcmV0dXJuIHsgMCB9OworCisgICAg
Ly8gSWYgdGhlIHZhbHVlIGlzIHRvbyBsYXJnZSBmb3IgdGhlIGludGVnZXIgdHlwZSwgb3ZlcmZs
b3cuCisgICAgaWYgKGV4cG9uZW50ID49IDEyOCkKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpSZXN1
bHRPdmVyZmxvd2VkIH07CisKKyAgICAvLyBJZiAwIDw9IGV4cG9uZW50IDwgc2lnbmlmaWNhbmRC
aXRzLCByaWdodCBzaGlmdCB0byBnZXQgdGhlIHJlc3VsdC4KKyAgICAvLyBPdGhlcndpc2UsIHNo
aWZ0IGxlZnQuCisgICAgSW50MTI4IHJlc3VsdCB7IHNpZ25pZmljYW5kIH07CisgICAgaWYgKGV4
cG9uZW50IDwgc2lnbmlmaWNhbmRCaXRzKQorICAgICAgICByZXN1bHQgPj49IHNpZ25pZmljYW5k
Qml0cyAtIGV4cG9uZW50OworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0IDw8PSBleHBvbmVudCAt
IHNpZ25pZmljYW5kQml0czsKKyAgICByZXN1bHQgKj0gc2lnbjsKKyAgICByZXR1cm4geyByZXN1
bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IEV4YWN0VGltZTo6YWRkKER1cmF0
aW9uIGR1cmF0aW9uKSBjb25zdAoreworICAgIEFTU0VSVCghZHVyYXRpb24ueWVhcnMoKSk7Cisg
ICAgQVNTRVJUKCFkdXJhdGlvbi5tb250aHMoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi53ZWVr
cygpKTsKKyAgICBBU1NFUlQoIWR1cmF0aW9uLmRheXMoKSk7CisKKyAgICBDaGVja2VkSW50MTI4
IHJlc3VsdE5zIHsgbV9lcG9jaE5hbm9zZWNvbmRzIH07CisKKyAgICAvLyBUaGUgZHVyYXRpb24n
cyBob3VycywgbWludXRlcywgc2Vjb25kcywgYW5kIG1pbGxpc2Vjb25kcyBzaG91bGQgYmUKKyAg
ICAvLyBhYmxlIHRvIGJlIGNhc3QgaW50byBhIDY0LWJpdCBpbnQuIDIqMWU4IDI0LWhvdXIgZGF5
cyBpcyB0aGUgbWF4aW11bQorICAgIC8vIHRpbWUgc3BhbiBmb3IgZXhhY3QgdGltZSwgc28gaWYg
d2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGR1cmF0aW9uIGV4Y2VlZHMKKyAgICAvLyB0aGF0LCB0
aGVuIHdlIGNhbiBiYWlsIG91dC4KKworICAgIENoZWNrZWRJbnQxMjggaG91cnMgPSBjaGVja2Vk
Q2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLmhvdXJzKCkpOworICAgIHJlc3VsdE5zICs9IGhv
dXJzICogRXhhY3RUaW1lOjpuc1BlckhvdXI7CisgICAgQ2hlY2tlZEludDEyOCBtaW51dGVzID0g
Y2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5taW51dGVzKCkpOworICAgIHJlc3Vs
dE5zICs9IG1pbnV0ZXMgKiBFeGFjdFRpbWU6Om5zUGVyTWludXRlOworICAgIENoZWNrZWRJbnQx
Mjggc2Vjb25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24uc2Vjb25kcygp
KTsKKyAgICByZXN1bHROcyArPSBzZWNvbmRzICogRXhhY3RUaW1lOjpuc1BlclNlY29uZDsKKyAg
ICBDaGVja2VkSW50MTI4IG1pbGxpc2Vjb25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgo
ZHVyYXRpb24ubWlsbGlzZWNvbmRzKCkpOworICAgIHJlc3VsdE5zICs9IG1pbGxpc2Vjb25kcyAq
IEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZDsKKyAgICBDaGVja2VkSW50MTI4IG1pY3Jvc2Vj
b25kcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWljcm9zZWNvbmRzKCkp
OworICAgIHJlc3VsdE5zICs9IG1pY3Jvc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3Nl
Y29uZDsKKyAgICByZXN1bHROcyArPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9u
Lm5hbm9zZWNvbmRzKCkpOworICAgIGlmIChyZXN1bHROcy5oYXNPdmVyZmxvd2VkKCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBFeGFjdFRpbWUgcmVzdWx0IHsgcmVzdWx0
TnMudmFsdWUoKSB9OworICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJbnQxMjggRXhhY3RUaW1l
Ojpyb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0
IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCit7CisgICAgSW50MTI4IGluY3JlbWVu
dE5zIHsgaW5jcmVtZW50IH07CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkhvdXI6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJIb3VyOyBicmVhazsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6
Om5zUGVyTWludXRlOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiBpbmNy
ZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TWlsbGlzZWNvbmQ6IGluY3JlbWVudE5zICo9IEV4YWN0VGltZTo6bnNQZXJNaWxs
aXNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiBpbmNy
ZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7IGJyZWFrOworICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHJvdW5kTnVtYmVyVG9JbmNy
ZW1lbnQocXVhbnRpdHksIGluY3JlbWVudE5zLCByb3VuZGluZ01vZGUpOworfQorCisvLyBEaWZm
ZXJlbmNlSW5zdGFudCAoIG5zMSwgbnMyLCByb3VuZGluZ0luY3JlbWVudCwgc21hbGxlc3RVbml0
LCByb3VuZGluZ01vZGUgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtZGlmZmVyZW5jZWluc3RhbnQKK0ludDEyOCBFeGFjdFRpbWU6OmRpZmZlcmVu
Y2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0
LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIEludDEyOCBkaWZmID0g
b3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzIC0gbV9lcG9jaE5hbm9zZWNvbmRzOworICAgIHJldHVy
biByb3VuZChkaWZmLCBpbmNyZW1lbnQsIHVuaXQsIHJvdW5kaW5nTW9kZSk7Cit9CisKK0V4YWN0
VGltZSBFeGFjdFRpbWU6OnJvdW5kKHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVu
aXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEV4YWN0
VGltZSB7IHJvdW5kKG1fZXBvY2hOYW5vc2Vjb25kcywgaW5jcmVtZW50LCB1bml0LCByb3VuZGlu
Z01vZGUpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCmluZGV4IGM3NDI0YWU5MzFl
ZmUxYjUwZGMwYWNkMjJiZjIxYjk5NzA5NTZhNmYuLjFjYmI2YjRmZDgwNWQxNTcxMmM5ODViOWRj
YzgyNDE3N2VlNzkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CkBAIC03OSw2ICs4MCwxMjIgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEgeyB9Owog
fTsKIAorY2xhc3MgRXhhY3RUaW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChFeGFj
dFRpbWUpOworcHVibGljOgorICAgIGNvbnN0ZXhwciBFeGFjdFRpbWUoKSA9IGRlZmF1bHQ7Cisg
ICAgY29uc3RleHByIEV4YWN0VGltZShjb25zdCBFeGFjdFRpbWUmKSA9IGRlZmF1bHQ7CisgICAg
Y29uc3RleHByIGV4cGxpY2l0IEV4YWN0VGltZShJbnQxMjggZXBvY2hOYW5vc2Vjb25kcykgOiBt
X2Vwb2NoTmFub3NlY29uZHMoZXBvY2hOYW5vc2Vjb25kcykgeyB9CisKKyAgICBzdGF0aWMgY29u
c3RleHByIEV4YWN0VGltZSBmcm9tRXBvY2hTZWNvbmRzKGludDY0X3QgZXBvY2hTZWNvbmRzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9jaFNlY29uZHMgfSAq
IEV4YWN0VGltZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4
YWN0VGltZSBmcm9tRXBvY2hNaWxsaXNlY29uZHMoaW50NjRfdCBlcG9jaE1pbGxpc2Vjb25kcykK
KyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWxsaXNlY29u
ZHMgfSAqIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgRXhhY3RUaW1lIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyhpbnQ2NF90IGVwb2NoTWlj
cm9zZWNvbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEV4YWN0VGltZShJbnQxMjggeyBlcG9j
aE1pY3Jvc2Vjb25kcyB9ICogRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kKTsKKyAgICB9Cisg
ICAgc3RhdGljIEV4YWN0VGltZSBmcm9tSVNPUGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50
OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMs
IHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNl
dCk7CisKKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAg
ICB9CisgICAgY29uc3RleHByIGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNv
bmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcygpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAvIEV4YWN0VGltZTo6bnNQZXJN
aWNyb3NlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhwciBJbnQxMjggZXBvY2hOYW5vc2Vjb25k
cygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgaW50IG5hbm9z
ZWNvbmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7CisgICAg
fQorCisgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25kcyA8IDApIHsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBhc1N0cmluZ0ltcGwo
YnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxpZEVwb2NoTmFu
b3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcworICAg
IGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZXBvY2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vj
b25kcyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9lcG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9z
ZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0g
b3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vw
b2NoTmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNv
bmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVy
Lm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEV4YWN0VGlt
ZT4gYWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShFeGFjdFRpbWUg
b3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNv
bnN0OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5p
dCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHBy
IEludDEyOCBkYXlSYW5nZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAvLyAxZTggZGF5cwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQgeyAxMDAwIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7IDEnMDAwJzAwMCB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAw
MCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRlID0gbnNQZXJTZWNv
bmQgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1BlckhvdXIgPSBuc1Blck1p
bnV0ZSAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZhbHVlID0gLWRheVJh
bmdlU2Vjb25kcyAqIG5zUGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1h
eFZhbHVlID0gZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAgICBzdGF0aWMgdm9p
ZCBhc1N0cmluZ0ltcGwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4IHZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWls
ZGVyLCB2YWx1ZSAvIDEwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHZhbHVlICUgMTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50MTI4IHJv
dW5kKEludDEyOCBxdWFudGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJv
dW5kaW5nTW9kZSk7CisKKyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRzIHsgfTsKK307CisK
IGNsYXNzIFBsYWluVGltZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1l
KTsKIHB1YmxpYzoKQEAgLTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJp
bmcoUGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbgog
CiBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitzdGQ6Om9wdGlvbmFs
PEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBJ
U084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2M2U5NWJlZjAwNjIw
YTMwNmEzYTU1ZjA0YTY1NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNlNzA4ZDFhMmZmNTg0
YjBhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmgKQEAgLTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAgIFVEYXRlSW50ZXJ2
YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2Jq
ZWN0Kik7CiAKKyAgICBzdGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6IHVpbnQ4X3QgeyBO
b25lLCBOYXJyb3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBFcmEgOiB1aW50OF90
IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgWWVhciA6IHVp
bnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKaW5kZXggNzU4NGNmMGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcxY2YzYi4uNmU0ZDYy
NWM1MDJmMjBjNDNiZjlkNjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsTwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwog
fQogCisvLyBIYW5kbGVEYXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQsIHggKQorLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaGFuZGxlZGF0ZXRp
bWV2YWx1ZQorZG91YmxlIEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKworICAg
IC8vIEZJWE1FOgorICAgIC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRlbXBvcmFsIHR5cGVz
CisgICAgLy8gIC0gV29yayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8vICAtIFJldHVybiBV
RGF0ZUZvcm1hdCBhbmQgVURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCB4KTsKKyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIGluc3RhbnQt
PmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIFdURjo6dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmplY3QpKSk7Cit9CisK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0
ZVRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTAwLDE0ICsxMjIs
OCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAKICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJs
ZSB2YWx1ZTsKLQotICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0g
ZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAg
ICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
fQorICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVW
YWx1ZShnbG9iYWxPYmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShm
b3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTU2LDE0ICsxNzIs
OCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
RnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
RGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUuaXNVbmRlZmluZWQo
KSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVy
KGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50bERhdGVUaW1lRm9y
bWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9i
amVjdCwgdmFsdWUpKSk7CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xv
YmFsT2IKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFs
dWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAK
LSAgICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVE
YXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFs
dWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRl
VGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1
ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnRE
YXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CkBAIC0y
MTIsOSArMjIyLDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBpZiAoc3RhcnREYXRl
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0
ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0g
c3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnRE
YXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVj
dCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRp
bWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUg
aXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAKaW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFlZGU1NDMwY2JmMmYy
NDFiMi4uNGI1OTZjMjdhNmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAog
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2ICsyMzIsNjIgQEAg
SlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVj
dCwgdW5zaWduZWRWYWx1ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRl
RnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFsdWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgY3JlYXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAgIFVJbnQxMjggdW5z
aWduZWRWYWx1ZTsKKyAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAodmFsdWUgPCAwKSB7
CisgICAgICAgIHVuc2lnbmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4PigtKHZhbHVlICsg
MSkpICsgMTsKKyAgICAgICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIHVuc2ln
bmVkVmFsdWUgPSB2YWx1ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9IFVJTlQ2NF9NQVgp
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJvbUltcGwoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSksIHNpZ24pKTsKKwor
ICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAgICAgIEpTQmlnSW50
KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIERpZ2l0IGxvd0Jp
dHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFs
dWUpKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAgICAgICBBU1NFUlQo
aGlnaEJpdHMpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93Qml0cyk7CisgICAg
ICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBiaWdJbnQtPnNldFNp
Z24oc2lnbik7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgQVNTRVJUKHNp
emVvZihEaWdpdCkgPT0gNCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0aWNfY2FzdDxEaWdp
dD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICBEaWdpdCBkaWdp
dDEgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFs
dWUgPj4gMzIpKTsKKyAgICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBEaWdpdCBkaWdpdDMg
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUg
Pj4gOTYpKTsKKworICAgIEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKworICAgIGludCBsZW5n
dGggPSBkaWdpdDMgPyA0IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExl
bmd0aChnbG9iYWxPYmplY3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CisKKyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0MCk7CisgICAgYmln
SW50LT5zZXREaWdpdCgxLCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMiwgZGlnaXQy
KTsKKyAgICBpZiAoZGlnaXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDMsIGRpZ2l0Myk7
CisgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKIEpT
QmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBib29sIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFjMWQ4ZmI2MTAxYWI2
OGQ5NzBmMDJiNzFlZGNiMzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2FlMmExODYxMTYzM2I2
ZGE2Nzk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1v
bi5oIgogI2luY2x1ZGUgPHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQx
MjguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpT
R2xvYmFsT2JqZWN0KiwgdWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGludDY0X3QgdmFsdWUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0ds
b2JhbE9iamVjdCosIHVpbnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQxMjggdmFsdWUpOwog
ICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGJvb2wgdmFs
dWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGRv
dWJsZSB2YWx1ZSk7CiAKQEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwog
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRv
VWludDY0SGVhcChKU0JpZ0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQs
IG1fZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3Bw
CmluZGV4IGRhZTliM2E5YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJjZmYuLjUyMTlmOGY3
MjQyYjg2Zjk0MGU4MjgyMzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2IEBAIExvY2FsVGlt
ZU9mZnNldCBEYXRlQ2FjaGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWlsbGlzZWNvbmRzRnJv
bUVwb2NoLCBXVEY6OlRpCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3RhdGljIGlubGluZSBk
b3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJs
ZSBtcykKLXsKLSAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4p
ICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7
Ci19Ci0KIGRvdWJsZSBEYXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSYgdCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1
dFRpbWVUeXBlKQogewogICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFy
KCksIHQubW9udGgoKSwgdC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ZWM5MTJjNWQwOTMwMzBmOTQyMzFi
MjhiOTM4ZDEzNTA3Y2FhMjA0Li41Mjg1MWQ1MTE1ZDc5NzlhYWQ1ZWQ4YTU1YzhjZDA2NDY0ZTdl
MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0yMTAsNiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBl
KSk7CiAgICAgICAgICAgICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1Y3R1cmUuaW5pdExh
dGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQp
IHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlOjpjcmVhdGUoaW5pdC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90eXBlKSk7CisgICAg
ICAgICAgICB9KTsKKwogICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAg
ICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOwpAQCAtMjE2Niw2ICsyMTc1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAg
dGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmpl
Y3QtPm1faW5zdGFudFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rp
bWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZTczNjQ0NjMyZjVlYzg5ZmM4YmY1
ZDYzZmYxMDg2NDZjN2UzMjgwLi5mNjUwYTNkODllZjJhNWUwNWFiY2NhMTkzZTZkNTZjNzQyNmNl
NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGlt
ZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV90aW1lWm9uZVN0cnVjdHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1YmxpYzoKIAogICAg
IFN0cnVjdHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0
dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogaW5z
dGFudFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1l
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUo
KSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDkz
NGJlYjA5YTcwYjc2ZmZhMmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1NDY2ZDk4ZWZmOWY2
NGZkMDk3OWRjOTAwNzQxYmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1LDMxIEBAIFRlbXBv
cmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwog
fQogCisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxEdXJhdGlvbkxpa2Us
IGRpc2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNPODYwMTo6RHVyYXRp
b24gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1w
b3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
SVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmpl
Y3QsIGl0ZW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmICghaXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IGRpc2FsbG93ZWRV
bml0cykgeworICAgICAgICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJBZGRpbmcgIl9zLCB0
ZW1wb3JhbFVuaXRQbHVyYWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1YmxpY05hbWUoKSwgIiBu
b3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVU
aW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBv
cmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBp
dGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDgyZjJk
NWQ2NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDljZGRkNzc1YjExNWQx
N2QxZTFjZWZjMTQyNzdkNDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIERF
Q0xBUkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b1RlbXBvcmFsRHVy
YXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RHVy
YXRpb24gdG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpOwogICAgIHN0YXRp
YyBUZW1wb3JhbER1cmF0aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAg
c3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOGU5ODE4NWIyZjJmNDc5YzZiMzA0M2U0ZDg3YTRlNGZiZDFmNGE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50LmNwcApAQCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxJbnN0YW50LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklTTzg2
MDEuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQmlnSW50
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3Jh
bEluc3RhbnQpIH07CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK1RlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9CisKK1RlbXBvcmFs
SW5zdGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBBU1NFUlQoZXhhY3RU
aW1lLmlzVmFsaWQoKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8VGVtcG9yYWxJbnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50KHZtLCBzdHJ1
Y3R1cmUsIGV4YWN0VGltZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIG9iamVjdDsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50ICggZXBvY2hOYW5v
c2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3Rh
bnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFjdFRpbWUuaXNWYWxp
ZCgpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtl
U3RyaW5nKGV4YWN0VGltZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNp
ZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVy
ZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRp
bWUpOworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZW
YWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBlcG9j
aE5hbm9zZWNvbmRzID0gdmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAoZXBvY2hOYW5vc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB0b3Rh
bCA9IGVwb2NoTmFub3NlY29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIElTTzg2MDE6
OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NFUlQoZXhhY3RUaW1l
LmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVj
dHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworICAg
IH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE5h
bm9zZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsKKyAgICBJbnQxMjgg
dG90YWw7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KSB7
CisgICAgICAgIEludDEyOCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdp
dCgwKSA6IDAgfTsKKyAgICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBi
aWdpbnQtPmRpZ2l0KDEpIDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBiaWdpbnQtPmxlbmd0
aCgpID4gMiA/IGJpZ2ludC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRvdGFsID0gZDIgPDwg
NjQgfCBkMSA8PCAzMiB8IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5n
dGgoKSA+IDM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihKU0JpZ0ludDo6
RGlnaXQpID09IDgpOworICAgICAgICBJbnQxMjggbG93IHsgYmlnaW50LT5sZW5ndGgoKSA+IDAg
PyBiaWdpbnQtPmRpZ2l0KDApIDogMCB9OworICAgICAgICBJbnQxMjggaGlnaCB7IGJpZ2ludC0+
bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAgICAgdG90YWwgPSBo
aWdoIDw8IDY0IHwgbG93OworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgo
KSA+IDI7CisgICAgfQorICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCAq
IChiaWdpbnQtPnNpZ24oKSA/IC0xIDogMSkgfTsKKworICAgIGlmIChiaWdJbnRUb29Mb25nIHx8
ICFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZyA9IGJp
Z2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CisgICAgICAgIGlmIChzY29wZS5leGNl
cHRpb24oKSkgeworICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAg
ICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAgICAgIH0KKwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhl
bGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBpcyBvdXRz
aWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3Ry
dWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4
YWN0VGltZSk7Cit9CisKKy8vIFRvVGVtcG9yYWxJbnN0YW50ICggaXRlbSApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsaW5zdGFu
dAorVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbEluc3RhbnQ+KHZtKSkK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpOworCisg
ICAgLy8gRklYTUU6IHdoZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5kcworICAgIC8vIGlm
IChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2bSkpCisgICAgLy8g
ICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3Rh
bnRTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+KGl0ZW1WYWx1ZSkt
PmVwb2NoVGltZSgpKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKworICAgIGF1dG8gcGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFyc2VJbnN0YW50KHN0
cmluZyk7CisgICAgaWYgKCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVsbGlwc2l6ZUF0KDEw
MCwgc3RyaW5nKSwgIicgaXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFudCBzdHJpbmciX3Mp
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFyc2VkRXhhY3RUaW1l
LnZhbHVlKCkpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICggaXRlbSApCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZy
b20KK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxJbnN0
YW50Pih2bSkpIHsKKyAgICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSA9IGpzQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpLT5leGFjdFRpbWUoKTsKKyAgICAgICAgcmV0
dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1
Y3R1cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9JbnN0YW50KGdsb2Jh
bE9iamVjdCwgaXRlbVZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hT
ZWNvbmRzICggZXBvY2hTZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcworVGVtcG9yYWxJbnN0
YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgZG91YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25kc1ZhbHVlLnRvTnVt
YmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihl
cG9jaFNlY29uZHMpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBtYWtlU3RyaW5nKGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51
bWJlciBvZiBlcG9jaCBzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRp
bWU6OmZyb21FcG9jaFNlY29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30K
KworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMgKCBlcG9jaE1pbGxp
c2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC5pbnN0YW50LmZyb21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1w
b3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGRvdWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2NoTWlsbGlzZWNvbmRz
VmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAgMQorICAgIGlmICgh
aXNJbnRlZ2VyKGVwb2NoTWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vjb25kcywgIiBpcyBu
b3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29uZHMiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4
YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGVwb2No
TWlsbGlzZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlm
VmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hNaWNyb3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyApCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9j
aG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9j
aE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2No
TWljcm9zZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUg
ZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRvQmlnSW50KGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyNp
ZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGVwb2NoTWljcm9zZWNvbmRzLmlzQmlnSW50MzIoKSkg
eworICAgICAgICBpbnQzMl90IG1pY3Jvc2Vjb25kcyA9IGVwb2NoTWljcm9zZWNvbmRzLmJpZ0lu
dDMyQXNJbnQzMigpOworICAgICAgICBhdXRvIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGlt
ZTo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAgICAgIEFTU0VSVChl
eGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9zZWNvbmRzKTsKKyAg
ICBib29sIGJpZ0ludFRvb0xvbmc7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6
OkRpZ2l0KSA9PSA0KQorICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+
IDI7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9
PSA4KTsKKyAgICAgICAgYmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAxOworICAg
IH0KKyAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kcyA9IEpTQmlnSW50Ojp0b0JpZ0ludDY0KGJpZ2lu
dCk7CisgICAgYXV0byBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1p
Y3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOworCisgICAgaWYgKGJpZ0ludFRvb0xvbmcgfHwgIWV4
YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nID0gYmlnaW50
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAg
YXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAgICAgfQorCisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVsbGlw
c2l6ZUF0KDEwMCwgYXJnQXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25kcyBpcyBvdXRzaWRl
IG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8gVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29uZHMgKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBv
Y2huYW5vc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9j
aE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hO
YW5vc2Vjb25kc1ZhbHVlKQoreworICAgIHJldHVybiB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5j
b21wYXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBvcmFsSW5zdGFudDo6
Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9uZVZhbHVlLCBK
U1ZhbHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiB0d28g
PSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmV4YWN0VGltZSgpID4gdHdvLT5leGFj
dFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlmIChvbmUtPmV4YWN0
VGltZSgpIDwgdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKC0xKTsK
KyAgICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFs
SW5zdGFudDo6ZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3Jh
bEluc3RhbnQqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVj
dChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVf
b3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFRlbXBvcmFsVW5pdCBkZWZhdWx0
TGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRlbXBvcmFsVW5pdDo6U2Vjb25k
KTsKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgeyB9LCBkZWZhdWx0TGFyZ2VzdFVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52
YWx1ZV9vcihkZWZhdWx0TGFyZ2VzdFVuaXQpOworCisgICAgaWYgKHNtYWxsZXN0ICYmIGxhcmdl
c3QgJiYgc21hbGxlc3QgPCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdl
c3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSb3VuZGluZ01v
ZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heEluY3JlbWVudCA9IG1heGlt
dW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpOworICAgIEFTU0VSVChtYXhJbmNyZW1l
bnQgJiYgKm1heEluY3JlbWVudCA8PSAxMDAwKTsgLy8gdW5ib3VuZGVkIGluY3JlbWVudHMgYXJl
IGltcG9zc2libGUgd2l0aCBUZW1wb3JhbC5JbnN0YW50CisgICAgdW5zaWduZWQgaW5jcmVtZW50
ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heElu
Y3JlbWVudCwgZmFsc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBJbnQxMjggcm91bmRlZERpZmYgPSBleGFjdFRpbWUoKS5kaWZmZXJlbmNlKG90aGVyLT5l
eGFjdFRpbWUoKSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAg
Ly8gTk9URTogRHVyYXRpb24gZmllbGRzIGFyZSBjdXJyZW50bHkgZG91YmxlcywgYW5kIHRoZSB0
b3RhbCBudW1iZXIgb2YKKyAgICAvLyBuYW5vc2Vjb25kcyBtYXkgbm90IGZpdCBpbiBhIGRvdWJs
ZS4gVGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UgaWYgdGhlCisgICAgLy8gaW50ZXJuYWwgcmVwcmVz
ZW50YXRpb24gb2YgRHVyYXRpb24gY2hhbmdlcy4KKyAgICBBU1NFUlQocm91bmRlZERpZmYgLyAx
JzAwMCcwMDAnMDAwIDwgSU5UNjRfTUFYKTsKKyAgICBkb3VibGUgc2Vjb25kcyB7IHN0YXRpY19j
YXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYgLyAxJzAwMCcwMDAn
MDAwKSkgfTsKKyAgICBkb3VibGUgbmFub3NlY29uZHNSZW1haW5kZXIgeyBzdGF0aWNfY2FzdDxk
b3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJvdW5kZWREaWZmICUgMScwMDAnMDAwJzAwMCkp
IH07CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0IHsgMCwgMCwgMCwgMCwgMCwgMCwgc2Vj
b25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5kZXIgfTsKKworICAgIFRlbXBvcmFsRHVyYXRp
b246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVu
aXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5p
dDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHJldHVy
biAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVybiA4NjQwMDsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0ZTc7CisgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK0lTTzg2MDE6OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJvdW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25z
T2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RV
bml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFs
VW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghc21hbGxlc3Qp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qg
cm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFs
dWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFJvdW5kaW5nTW9kZSByb3Vu
ZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3QsIG9wdGlvbnMsIFJv
dW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIGRvdWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bUluY3JlbWVudChzbWFsbGVzdFVuaXQpLCB0
cnVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJu
IGV4YWN0VGltZSgpLnJvdW5kKGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUp
OworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25z
IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
aW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBj
b25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGlu
dGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAg
ICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9uZSA9IG51bGxwdHI7
CisgICAgSlNWYWx1ZSB0aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAg
ICAgdGltZVpvbmUgPSBUZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9iamVjdCwgdGltZVpv
bmVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
fQorCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0byBtYWtlIGEgbmV3
IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgorICAgIGlmIChzdGQ6
OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5nTW9k
ZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcodGltZVpv
bmUpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7IGV4YWN0VGltZSgp
LnJvdW5kKGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSkgfTsKKworICAg
IC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAgLy8gMS4gTGV0IHJv
dW5kZWRJbnN0YW50IGJlICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50KHJvdW5kZWROcykuCisgICAg
Ly8gLi4uCisgICAgLy8gMS4gSWYgX291dHB1dFRpbWVab25lXyBpcyAqdW5kZWZpbmVkKiwgdGhl
bgorICAgIC8vICAgMS4gU2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8gISBDcmVhdGVUZW1wb3JhbFRp
bWVab25lKCoiVVRDIiopLgorICAgIC8vIDEuIExldCBfaXNvQ2FsZW5kYXJfIGJlICEgR2V0SVNP
ODYwMUNhbGVuZGFyKCkuCisgICAgLy8gMS4gTGV0IF9kYXRlVGltZV8gYmUgPyBCdWlsdGluVGlt
ZVpvbmVHZXRQbGFpbkRhdGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9pbnN0YW50XywgX2lz
b0NhbGVuZGFyXykuCisgICAgSlNPYmplY3QqIG91dHB1dFRpbWVab25lID0gdGltZVpvbmU7Cisg
ICAgaWYgKG91dHB1dFRpbWVab25lKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRklYTUU6IFRlbXBvcmFsLkluc3RhbnQudG9TdHJpbmcoe3RpbWVab25lfSkg
bm90IGltcGxlbWVudGVkIHlldCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgcmV0dXJuIHRvU3RyaW5nKG5ld0V4YWN0VGltZSwgdGltZVpvbmUsIGRhdGEpOworfQorCisv
LyBUZW1wb3JhbEluc3RhbnRUb1N0cmluZyAoIGluc3RhbnQsIHRpbWVab25lLCBwcmVjaXNpb24g
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVt
cG9yYWxpbnN0YW50dG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6OnRvU3RyaW5nKElT
Tzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9u
RGF0YSBwcmVjaXNpb24pCit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRp
bWUgeyBzdGF0aWNfY2FzdDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxpc2Vjb25kcygpKSwg
TG9jYWxUaW1lT2Zmc2V0IHsgfSB9OworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAg
IC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAxMDAwIGFuZCA5OTk5IGlu
Y2x1c2l2ZSB3ZSB3YW50IHRvCisgICAgLy8gdXNlIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCAo
UGFkSVNPWWVhcikuCisgICAgdW5zaWduZWQgeWVhckxlbmd0aCA9IDQ7CisgICAgaWYgKGdyZWdv
cmlhbkRhdGVUaW1lLnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpIDwg
MTAwMCkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkg
PCAwID8gJy0nIDogJysnKTsKKyAgICAgICAgeWVhckxlbmd0aCA9IDY7CisgICAgfQorCisgICAg
YnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFyTGVuZ3RoLCBzdGQ6OmFicyhn
cmVnb3JpYW5EYXRlVGltZS55ZWFyKCkpKSwKKyAgICAgICAgJy0nLCBwYWQoJzAnLCAyLCBncmVn
b3JpYW5EYXRlVGltZS5tb250aCgpICsgMSksCisgICAgICAgICctJywgcGFkKCcwJywgMiwgZ3Jl
Z29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSksCisgICAgICAgICdUJywgcGFkKCcwJywgMiwgZ3Jl
Z29yaWFuRGF0ZVRpbWUuaG91cigpKSwKKyAgICAgICAgJzonLCBwYWQoJzAnLCAyLCBncmVnb3Jp
YW5EYXRlVGltZS5taW51dGUoKSkpKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG5zUGVy
U2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIGludCBmcmFjdGlvbiB7IGV4YWN0VGltZS5u
YW5vc2Vjb25kc0ZyYWN0aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAwKQorICAgICAgICBm
cmFjdGlvbiArPSBuc1BlclNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KGJ1
aWxkZXIsIGdyZWdvcmlhbkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwgcHJlY2lzaW9uKTsK
KworICAgIGlmICh0aW1lWm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVz
IG9uIFRpbWVab25lOgorICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVTdHJpbmdfIGJlID8g
QnVpbHRpblRpbWVab25lR2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8sIF9pbnN0YW50Xyku
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdaJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5MzdjN2VmYTNhZDQwNTZjMzli
YTEyNmEzOWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJJU084NjAxLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1
cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJWTS5oIgor
I2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBv
cmFsSW5zdGFudCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsSW5z
dGFudFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RXhhY3RUaW1lKTsKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiwgSVNPODYw
MTo6RXhhY3RUaW1lLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFRlbXBvcmFs
SW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFN0cnVj
dHVyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdG9JbnN0YW50KEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbShKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21FcG9jaFNlY29uZHMo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBm
cm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0
aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hOYW5vc2Vj
b25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBh
cmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKworICAgIElTTzg2MDE6OkV4
YWN0VGltZSBleGFjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGltZS5nZXQoKTsgfQor
CisgICAgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCosIFRlbXBv
cmFsSW5zdGFudCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNPODYwMTo6RXhhY3RU
aW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBT
dHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0Owor
ICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxscHRyLCBQcmVjaXNp
b25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0
OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9TdHJpbmco
ZXhhY3RUaW1lKCksIHRpbWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpFeGFjdFRpbWUpOwor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RXhhY3RUaW1lIGZyb21PYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhJU084NjAxOjpFeGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSk7
CisKKyAgICBQYWNrZWQ8SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4YWN0VGltZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYTQy
ODBhMWNlNjcwOTBhNjc4MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVu
Y0Zyb21FcG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVu
Y0Zyb21FcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5vc2Vjb25kcyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
JnRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IGZyb21FcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJv
bUVwb2NoU2Vjb25kcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pbGxp
c2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNv
bmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pY3Jvc2Vjb25kcyAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNv
bXBhcmUgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFy
ZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGlu
c3RhbnRQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgaW5zdGFudFByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxs
VGVtcG9yYWxJbnN0YW50KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsSW5zdGFudCk7CisKK1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0YW50LCBjb25zdHJ1Y3RUZW1w
b3JhbEluc3RhbnQpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJv
dG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiSW5zdGFudCJfcywg
UHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBpbnN0YW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgaW5zdGFudFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIGlu
c3RhbnRTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVu
dCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIHN0cnVjdHVyZSkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbEluc3RhbnQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnN0YW50
IikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFu
dDo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21F
cG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaFNlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcywgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2NoTWljcm9zZWNvbmRz
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFu
b3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZy
b21FcG9jaE5hbm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFu
dDo6Y29tcGFyZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNkZWRlMmEyMTg5NWE4ZjJmNjk4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciBm
aW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDk4Y2Fi
YjIwMDU0NWJkNDdhNTQyMmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFs
SW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU3VidHJhY3Qp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFscyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1Zh
bHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNvbmRzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMpOworCit9
CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJhc2U6OnNfaW5mbywgJmluc3RhbnRQcm90b3R5
cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAgICAgICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwgICAgICAg
ICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBy
b3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1JvdW5kICAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAgICAgICAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0pTT04gICAgICAg
ICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAgIHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZh
bHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlcG9jaFNlY29uZHMgICAgICAgdGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAgICAgIERvbnRFbnVtfFJlYWRP
bmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWlsbGlzZWNvbmRzICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9t
QWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdl
dHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nvcgor
ICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hO
YW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLwor
CitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlPih2
bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHBy
b3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisK
K1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1Rl
bXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4g
ZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7CisgICAgVGVtcG9yYWxVbml0OjpZZWFyLAorICAg
IFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9yYWxVbml0OjpXZWVrLAorICAgIFRlbXBv
cmFsVW5pdDo6RGF5LAorfTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFs
SW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOwor
CisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xp
bWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2Fs
bG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9
IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZChkdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRp
bWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRp
dGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJf
cyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0
aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYw
MTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoLWR1
cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9y
dGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCAqbmV3RXhhY3RU
aW1lKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisg
ICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5zdGFudC0+ZGlmZmVy
ZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1
cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RG
TW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBv
cmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJf
cyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJbnN0YW50Ojp0b0lu
c3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRpb25zID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1bHQgPSBvdGhlci0+
ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3Rh
bnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90
eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgSVNPODYw
MTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBv
dGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQtPmV4YWN0VGltZSgp
ID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3Rv
dHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgaW5zdGFudC0+dG9T
dHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvSlNPTiBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3Ry
aW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBhIEpTQnVpbHRpbj8K
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9M
b2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7
CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxEYXRlVGltZUZvcm1h
dDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBmb3JtYXR0ZXItPmlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGltZUZvcm1hdCB0byB1
c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RU
aW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBJ
bnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfcyk7Cit9CisKK0pT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9j
aFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWlsbGlzZWNv
bmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3Jh
bEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5z
dGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
aW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNy
b3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRl
bXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9iYWxP
YmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRzKCkpKSk7Cit9CisK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJF
cG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBp
bnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIxNDY5ODk3OGI4YzA3
ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGZmMGJjZmRjZjgyZDIyMWQxZWNiODVhOGMxYjQ2YjY1
MWI0ZGI3MzUuLjg5NDZhMGNjNjEwNDg0Zjg4MjRmNWNmZGU3Y2Y0YjczOTg1YzlkNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAg
LTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVQ
cm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlvbkNv
bnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVtcG9yYWxE
dXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xvYmFs
T2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwog
fQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBKU09i
amVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpz
Q2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkp
KTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZt
LCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVj
dCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2ICs5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAgQ2FsZW5kYXIgICAg
ICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVhdGVJbnN0YW50Q29u
c3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAg
ICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNv
bnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAgLTM3NCw2ICszODUs
MTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8vIEZvcm1hdFNlY29u
ZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNv
bmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3JtYXRTZWNvbmRzU3Ry
aW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVk
IGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBpZiAocHJlY2lzaW9u
LnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVybjsKKworICAgIGJ1
aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAgZm9ybWF0U2Vjb25k
c1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24ucHJlY2lzaW9uKTsK
K30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAoIHVuaXQg
KQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtbWF4
aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5pdCkKQEAgLTQzNSw2
ICs0NTcsNDMgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91YmxlIHgsIGRvdWJs
ZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQoreworICAgIHJldHVy
biB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggSW50MTI4
CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50MTI4IGluY3JlbWVu
dCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9PSAxKQorICAgICAg
ICByZXR1cm4geDsKKworICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNyZW1lbnQ7CisgICAg
SW50MTI4IHJlbWFpbmRlciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFyZW1haW5kZXIpCisg
ICAgICAgIHJldHVybiB4OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVyIDwgMDsKKyAgICBz
d2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoKKyAgICAgICAgaWYg
KCFzaWduKQorICAgICAgICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgIHF1
b3RpZW50LS07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpUcnVuYzoK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQ6CisgICAg
ICAgIC8vICJoYWxmIHVwIGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAoYWJzKHJlbWFpbmRl
ciAqIDIpID49IGluY3JlbWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9IHNpZ24gPyAtMSA6
IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGllbnQgKiBpbmNyZW1l
bnQ7Cit9CisKIFRlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAgIHJldHVybiBpbnRs
T3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgZ2xvYmFsT2Jq
ZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggNzkxNTc5OGNkYjk4YWI3NDU4M2I4
YzhhYzM2YTU1ZDFiNDVmMWMxNC4uYWIzYjI5MzNmNTNhOGNhNmQ2NjFkMjZmNmQ3MTliNzc5YzJk
NjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUg
PHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMTA1LDkgKzEwNiwxMSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0ZW1wb3JhbEZyYWN0
aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAogUHJlY2lzaW9uRGF0
YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlv
bnMpOwogUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqLCBSb3VuZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rp
b24oU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1cGxlPFByZWNpc2lv
biwgdW5zaWduZWQ+KTsKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRl
ciYsIHVuc2lnbmVkIHNlY29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNpc2lvbkRhdGEpOwog
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVu
aXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGlu
Y2x1c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBp
bmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJ
bnQxMjgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVudW0gY2xhc3MgVGVt
cG9yYWxPdmVyZmxvdyA6IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCAyZmFjNzM0MzU0ODllYjcwZDRkOTZlOGQyOWIzNGJkM2I2OGRi
OGNmLi45Y2Y1ZmVhMDE5ODQ5ZGI2ZTY2MDkxMGJiOTQ1MWNkMjdjMjVmYmM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAKICNpbmNsdWRlICJT
eW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAi
VGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgog
I2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgpAQCAtMTU5Nyw2ICsxNTk4LDcgQEAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVt
cG9yYWxJbnN0YW50KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxh
aW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFs
VGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IGJkZjQzMWU4NGVmMDk0ODU2YmMwMjczMGM0MGZmZTZlZGFhNWMxZDYu
LjZmZTQ2NzQwNWJiYjQ3NGVjMjIzZDY5YjQ4MWIxOGQ2ZjBhZDNkOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMTg3LDYgKzE4Nyw3IEBAIGNsYXNzIFJlZ0V4cDsKICNlbmRp
ZgogY2xhc3MgU3ltYm9sOwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2NsYXNzIFRlbXBvcmFs
SW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MDEsNiArNjAyLDcgQEAg
cHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIvU291cmNlL1dURi93
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBlZmFiNGFkM2JjOWY3MGQ2N2ViNjIzZDA3MzE2
MTA5Mjk5OGQzZTM0Li45YzFhNWZjNzQyNDE4NWRkMjk3YTAxYmVkYmZjYTAyY2JlZjE5NTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTI5MSwxMiArMjkxLDE4IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3Ry
dWN0IEFyaXRobWV0aWNPcGVyCiAgICAgc3RhdGljIGlubGluZSBib29sIGFkZChMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICNp
ZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAg
ICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbHNlCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXpl
b2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAg
ICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICB9
CisjZW5kaWYKKyNlbmRpZgogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAg
ICAgICAgICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmICgoc3RkOjpudW1l
cmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLSByaHMpIDwgbGhzKQpAQCAtMzA5LDE4ICsz
MTUsMjMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBS
ZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfSAvLyBpZiB0aGUgc2ln
bnMgZG8gbm90IG1hdGNoIHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJl
c3VsdCA9IGxocyArIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAK
ICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUm
IHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIENPTVBJTEVSKEdDQ19DT01Q
QVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5f
c3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKKyNp
ZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXplb2YoTEhTKSA8PSBz
aXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMpIDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNl
bmRpZgorICAgICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOworICAgICAgICAgICAgaWYgKF9fYnVp
bHRpbl9zdWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAg
ICAgICAgIGlmICghc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAgICAgIGlmIChsaHMg
Pj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJl
c3VsdFR5cGU+OjptYXgoKSArIHJocykKQEAgLTMzMiwxOCArMzQzLDI2IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFy
aXRobWV0aWNPcGVyCiAgICAgICAgIH0gLy8gaWYgdGhlIHNpZ25zIG1hdGNoIHRoaXMgb3BlcmF0
aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJlc3VsdCA9IGxocyAtIHJoczsKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbXVs
dGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9S
RVRVUk4KICAgICB7CiAjaWYgVVNFKE1VTF9PVkVSRkxPVykKLSAgICAgICAgUmVzdWx0VHlwZSB0
ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXAp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisgICAgICAgIC8vIERvbid0IHVzZSB0aGUgYnVpbHRp
biBpZiB0aGUgaW50MTI4IHR5cGUgaXMgV1RGOjpbVV1JbnQxMjhJbXBsLgorICAgICAgICAvLyBB
bHNvIGRvbid0IHVzZSB0aGUgYnVpbHRpbiBmb3IgX19bdV1pbnQxMjhfdCBvbiBDbGFuZy9MaW51
eC4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MDQKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5HKSAmJiBPUyhMSU5V
WCkpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90
KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAg
ICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJm
bG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFI
QVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKSkKKyAgICAgICAg
fQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKHNpZ25zTWF0Y2gobGhzLCByaHMpKSB7CiAg
ICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAobGhzICYmIChz
dGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxocykgPCByaHMpCkBAIC0z
NjUsNyArMzg0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBl
bmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfQogICAgICAg
ICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAg
fQogCiAgICAgc3RhdGljIGlubGluZSBib29sIGRpdmlkZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1
bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgpAQCAtMzg1LDQ3ICs0MDMsNjYgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBl
PiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAvLyBMSFMgYW5kIFJIUyBhcmUgdW5zaWduZWQg
dHlwZXMgc28gYm91bmRzIGNoZWNrcyBhcmUgbmljZSBhbmQgZWFzeQogICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VO
VVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCiAgICAgICAg
IFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGhz
LCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0
ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAgICBSZXN1bHRUeXBl
IHRlbXAgPSBsaHMgKyByaHM7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisjaWYgIUhB
VkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9m
KHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYK
KyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVt
cDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAg
ICB9CisjZW5kaWYKKyNlbmRpZgorICAgICAgICB0ZW1wID0gbGhzICsgcmhzOwogICAgICAgICBp
ZiAodGVtcCA8IGxocykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0
ID0gdGVtcDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0
aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkg
V0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQog
ICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJm
bG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAgICAgUmVz
dWx0VHlwZSB0ZW1wID0gbGhzIC0gcmhzOworI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQor
I2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMpIDw9
IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkgewor
I2VuZGlmCisgICAgICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMsIHJocywg
JnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkK
KyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgdGVtcCA9IGxocyAtIHJoczsKICAg
ICAgICAgaWYgKHRlbXAgPiBsaHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5
cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVTRShNVUxfT1ZFUkZM
T1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxf
b3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorICAgICAg
ICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gaWYgdGhlIGludDEyOCB0eXBlIGlzIFdURjo6SW50
MTI4SW1wbC4KKyAgICAgICAgLy8gQWxzbyBkb24ndCB1c2UgdGhlIGJ1aWx0aW4gZm9yIF9faW50
MTI4X3Qgb24gQ2xhbmcvTGludXguCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MubGx2bS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisjaWYgIUhBVkUoSU5UMTI4X1QpIHx8IChDT01QSUxF
UihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMp
IDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkg
eworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAo
X19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5HKSAmJiBP
UyhMSU5VWCkpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAgICAgICAgIGlmICghbGhzIHx8
ICFyaHMpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQzNCw3ICs0NzEsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBS
SFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJl
dHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIGRpdmlk
ZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVS
TgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4ZWFiYTQ2NmI2ZTZjMGFkNjZkYzAyZjUyNTc0
MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRlZTQ4NTUzNjE3ZmNhMDZkOGQ3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5o
CkBAIC0zODgsNiArMzg4LDExIEBAIGlubGluZSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIo
aW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAgICByZXR1cm4gZCAtIHN0ZXA7CiB9CiAK
K2lubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBz
ZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1Blckhv
dXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNv
bmQgKyBtcyk7Cit9CisKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0IGluIG1pbGxpc2Vjb25k
IChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklWQVRFIExvY2FsVGltZU9mZnNldCBjYWxjdWxh
dGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0luTWlsbGlzZWNvbmRzLCBUaW1lVHlwZSA9IFVU
Q1RpbWUpOwogCkBAIC00MTAsNiArNDE1LDcgQEAgdXNpbmcgV1RGOjptc1RvSG91cnM7CiB1c2lu
ZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJNaW51dGU7CiB1c2lu
ZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6
OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7CiB1c2luZyBXVEY6
OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MTI4LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbnQx
MjguaAppbmRleCA0MzU3ZjQ3OWExYzE1ZjQyYmFlNjk1YjljZTdjYzkyNTg5MmQ1MWFhLi4xNWM4
OGFmMWFhZGMwMDA3OGRmOWNmZGQwOGE5NjliODIxOWRjMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9JbnQxMjguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaApAQCAtNTE1LDcg
KzUxNSw3IEBAIGNvbnN0ZXhwciBVSW50MTI4SW1wbCBvcGVyYXRvcjw8KFVJbnQxMjhJbXBsIGxo
cywgaW50IGFtb3VudCk7CiBjb25zdGV4cHIgVUludDEyOEltcGwgb3BlcmF0b3I+PihVSW50MTI4
SW1wbCBsaHMsIGludCBhbW91bnQpOwogY29uc3RleHByIFVJbnQxMjhJbXBsIG9wZXJhdG9yKyhV
SW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocyk7CiBjb25zdGV4cHIgVUludDEyOEltcGwg
b3BlcmF0b3ItKFVJbnQxMjhJbXBsIGxocywgVUludDEyOEltcGwgcmhzKTsKLVVJbnQxMjhJbXBs
IG9wZXJhdG9yKihVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocyk7Citjb25zdGV4cHIg
VUludDEyOEltcGwgb3BlcmF0b3IqKFVJbnQxMjhJbXBsIGxocywgVUludDEyOEltcGwgcmhzKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBVSW50MTI4SW1wbCBvcGVyYXRvci8oVUludDEyOEltcGwgbGhz
LCBVSW50MTI4SW1wbCByaHMpOwogV1RGX0VYUE9SVF9QUklWQVRFIFVJbnQxMjhJbXBsIG9wZXJh
dG9yJShVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocyk7CiAKQEAgLTgxMiw3ICs4MTIs
OCBAQCBjb25zdGV4cHIgVUludDEyOEltcGwgb3BlcmF0b3ItKFVJbnQxMjhJbXBsIGxocywgVUlu
dDEyOEltcGwgcmhzKSB7CiAgICAgICBsaHMsIHJocyk7CiB9CiAKLWlubGluZSBVSW50MTI4SW1w
bCBvcGVyYXRvciooVUludDEyOEltcGwgbGhzLCBVSW50MTI4SW1wbCByaHMpIHsKK2lubGluZSBj
b25zdGV4cHIgVUludDEyOEltcGwgb3BlcmF0b3IqKFVJbnQxMjhJbXBsIGxocywgVUludDEyOElt
cGwgcmhzKQorewogI2lmIENPTVBJTEVSKE1TVkMpICYmIENQVShYODZfNjQpCiAgIHVpbnQ2NF90
IGNhcnJ5OwogICB1aW50NjRfdCBsb3cgPSBfdW11bDEyOChVSW50MTI4TG93NjQobGhzKSwgVUlu
dDEyOExvdzY0KHJocyksICZjYXJyeSk7CkBAIC04OTQsNyArODk1LDcgQEAgaW5saW5lIEludDEy
OEltcGwmIEludDEyOEltcGw6Om9wZXJhdG9yPSh1bnNpZ25lZCBsb25nIGxvbmcgdikgewogY29u
c3RleHByIEludDEyOEltcGwgb3BlcmF0b3ItKEludDEyOEltcGwgdik7CiBjb25zdGV4cHIgSW50
MTI4SW1wbCBvcGVyYXRvcisoSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKTsKIGNvbnN0
ZXhwciBJbnQxMjhJbXBsIG9wZXJhdG9yLShJbnQxMjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMp
OwotSW50MTI4SW1wbCBvcGVyYXRvciooSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKTsK
K2NvbnN0ZXhwciBJbnQxMjhJbXBsIG9wZXJhdG9yKihJbnQxMjhJbXBsIGxocywgSW50MTI4SW1w
bCByaHMpOwogV1RGX0VYUE9SVF9QUklWQVRFIEludDEyOEltcGwgb3BlcmF0b3IvKEludDEyOElt
cGwgbGhzLCBJbnQxMjhJbXBsIHJocyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgSW50MTI4SW1wbCBv
cGVyYXRvciUoSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKTsKIGNvbnN0ZXhwciBJbnQx
MjhJbXBsIG9wZXJhdG9yfChJbnQxMjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpOwpAQCAtMTE5
Miw3ICsxMTkzLDggQEAgY29uc3RleHByIEludDEyOEltcGwgb3BlcmF0b3ItKEludDEyOEltcGwg
bGhzLCBJbnQxMjhJbXBsIHJocykgewogICAgICAgbGhzLCByaHMpOwogfQogCi1pbmxpbmUgSW50
MTI4SW1wbCBvcGVyYXRvciooSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7Citpbmxp
bmUgY29uc3RleHByIEludDEyOEltcGwgb3BlcmF0b3IqKEludDEyOEltcGwgbGhzLCBJbnQxMjhJ
bXBsIHJocykKK3sKICAgcmV0dXJuIE1ha2VJbnQxMjgoCiAgICAgICBpbnQxMjhfaW50ZXJuYWw6
OkJpdENhc3RUb1NpZ25lZChVSW50MTI4SGlnaDY0KFVJbnQxMjhJbXBsKGxocykgKiByaHMpKSwK
ICAgICAgIFVJbnQxMjhMb3c2NChVSW50MTI4SW1wbChsaHMpICogcmhzKSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdkMTYzZjZjNjM0
ZmI1ZDYwMDY1MTc5NDZiZWEyMDMwZjk2MGQxZGIuLjE5YmQ0MTY2NjQyNzRhNmUzNzAxNDBjMmVh
ZjRkOWUwOTBhMmM2OGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50
byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1w
b3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZE5vdEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKGluc3RhbnRzLmZvckVhY2gpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LlRlbXBv
cmFsLkluc3RhbnQpOgorICAgICAgICAoY29uc3QubWF4VmFsdWUubmV3LlRlbXBvcmFsLkluc3Rh
bnQpOgorICAgICAgICAoc2hvdWxkQmUuZXBvY2guc3VidHJhY3QpOgorICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6IE5vIG5lZWQgdG8gaWdub3JlIGFsbCBUZW1wb3JhbC5JbnN0YW50IHRl
c3RzCisgICAgICAgICAgYW55bW9yZSwgb25seSB0aGUgb25lcyBmb3IgdGhlIHVuaW1wbGVtZW50
ZWQgbWV0aG9kcy4KKwogMjAyMS0xMC0yNCAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1
cmUoKSBzaG91bGQgdXNlIHByb3RvdHlwZSdzIGdsb2JhbCBvYmplY3QKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3Jh
bC1pbnN0YW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YjdhNWI2Y2EwNTkzNGE2NDU3ZDZmNTZkOWQ1YzVi
NTQxZTJhODIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0
YW50LmpzCkBAIC0wLDAgKzEsNDA3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlVGVtcG9y
YWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGROb3RC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgYSB2YWx1ZSB0byBiZSBkaWZmZXJlbnQgZnJv
bSAke2V4cGVjdGVkfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5
cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlm
ICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobWVz
c2FnZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7CisgICAgICAgICAgICBpZiAoIW1lc3NhZ2Uu
dGVzdChTdHJpbmcoZXJyb3IpKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4
cGVjdGVkICcke1N0cmluZyhlcnJvcil9JyB0byBtYXRjaCAke21lc3NhZ2V9IWApOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIGVwb2NoCit7CisgICAgY29uc3QgaW5zdGFudHMg
PSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaE1pbGxpc2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hNaWNyb3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5h
bm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTcwLTAxLTAx
VDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4g
eworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgMCk7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIDApOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTWljcm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hOYW5vc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5n
KCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
SlNPTigpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gcG9zaXRp
dmUgZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRl
bXBvcmFsLkluc3RhbnQoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMV8wMDBfMDAwXzAwMCksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoMV8wMDBfMDAw
XzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3Nl
Y29uZHMoMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzIwMDEtMDktMDlUMDE6NDY6NDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCAxXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxp
c2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoTWljcm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzIwMDEtMDktMDlUMDE6NDY6
NDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMDAxLTA5LTA5VDAx
OjQ2OjQwWicpOworICAgIH0pOworfQorCisvLyBuZWdhdGl2ZSBlcG9jaCB2YWx1ZQoreworICAg
IGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtMV8wMDBf
MDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9j
aFNlY29uZHMoLTFfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaE1pbGxpc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtMV8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoLTFfMDAwXzAwMF8w
MDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTM4LTA0
LTI0VDIyOjEzOjIwWicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkg
PT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25kcywgLTFfMDAwXzAwMF8w
MDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtMV8wMDBf
MDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9zZWNvbmRz
LCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTkzOC0wNC0yNFQyMjoxMzoyMFonKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyk7Cisg
ICAgfSk7Cit9CisKKy8vIG1heGludDY0IGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFu
dHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDkyMjMzNzIwMzY4NTQ3NzU4MDdu
KSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyg5MjIzMzcy
MDM2ODU0Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjI2Mi0wNC0x
MVQyMzo0NzoxNi44NTQ3NzU4MDdaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNoKChp
bnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCA5MjIz
MzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgOTIy
MzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMs
IDkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9z
ZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
dG9TdHJpbmcoKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpOworICAgICAgICBz
aG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDda
Jyk7CisgICAgfSk7Cit9CisKKy8vIG1pbmludDY0IGVwb2NoIHZhbHVlCit7CisgICAgY29uc3Qg
aW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KC05MjIzMzcyMDM2ODU0
Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
LTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
Njc3LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZv
ckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29u
ZHMsIC05MjIzMzcyMDM2KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vj
b25kcywgLTkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlj
cm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTmFub3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1ODA4bik7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicp
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTY3Ny0wOS0yMVQwMDoxMjo0
My4xNDUyMjQxOTJaJyk7CisgICAgfSk7Cit9CisKKy8vIG1heCBJbnN0YW50IHJhbmdlCit7Cisg
ICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAw
XzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21F
cG9jaFNlY29uZHMoODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hNaWxsaXNlY29uZHMoODY0MDBfMDAwMF8wMDAwXzAwMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAw
biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMoODY0MDBf
MDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
KzI3NTc2MC0wOS0xM1QwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2go
KGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDg2
NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29u
ZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2No
TWljcm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4p
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcrMjc1NzYwLTA5LTEzVDAw
OjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnKzI3NTc2MC0w
OS0xM1QwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworLy8gbWluIEluc3RhbnQgcmFuZ2UKK3sK
KyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoLTg2
NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaFNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
LTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCAtODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
bGxpc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWljcm9zZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAw
MF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJy0yNzE4
MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCks
ICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyB0b28gbGFyZ2UK
K3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAwMDBfMDAwMF8w
MDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvXGI4NjQwMDAwMDAwMDAwMDAwMDAwMDAxXGIvKTsK
Ky8vIHRvbyBzbWFsbAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoLTg2
NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMW4pLCBSYW5nZUVycm9yLCAvLTg2NDAwMDAwMDAwMDAw
MDAwMDAwMDFcYi8pOworLy8gbGFyZ2VyIHRoYW4gbWF4aW50MTI4CitzaG91bGRUaHJvdygoKSA9
PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgxbiA8PCAxMjluKSwgUmFuZ2VFcnJvciwgL1xiNjgwNTY0
NzMzODQxODc2OTI2OTI2NzQ5MjE0ODYzNTM2NDIyOTEyXGIvKTsKKy8vIHNtYWxsZXIgdGhhbiBt
aW5pbnQxMjgKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KC0xbiA8PCAx
MjluKSwgUmFuZ2VFcnJvciwgLy02ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5
MTJcYi8pOworLy8gZG9lcyBub3QgY3Jhc2ggd2hlbiBiaWdpbnQgbG9uZ2VyIHRoYW4gbWF4aW50
MzIgZGlnaXRzCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudChCaWdJbnQo
JzknLnJlcGVhdCgyMTQ3NDgzNjQ3KSkpLCBSYW5nZUVycm9yKTsKKy8vIGNvbnN0cnVjdHMgZnJv
bSBzdHJpbmcKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5JbnN0YW50KCcwJykuZXBvY2hOYW5vc2Vj
b25kcywgMG4pOworLy8gdGhyb3dzIG9uIG51bWJlcgorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRl
bXBvcmFsLkluc3RhbnQoMCksIFR5cGVFcnJvcik7CisvLyB0aHJvd3Mgb24gc3RyaW5nIHRoYXQg
ZG9lcyBub3QgY29udmVydCB0byBCaWdJbnQKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3Jh
bC5JbnN0YW50KCdhYmMxMjMnKSwgU3ludGF4RXJyb3IpOworCisvLyBJbnN0YW50LmZyb20oaW5z
dGFudCkgaXMgbm90IHRoZSBzYW1lIG9iamVjdAoreworICAgIGNvbnN0IGluc3QgPSBUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzIwMjAtMDItMTJUMTE6NDIrMDE6MDBbRXVyb3BlL0Ftc3RlcmRhbV0n
KTsKKyAgICBzaG91bGROb3RCZShUZW1wb3JhbC5JbnN0YW50LmZyb20oaW5zdCksIGluc3QpOwor
fQorCisvLyB0b1N0cmluZworCit7CisgICAgY29uc3QgaTEgPSBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjNaJyk7CisgICAgY29uc3QgaTIgPSBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzBaJyk7CisgICAgY29uc3QgaTMgPSBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8vIGRlZmF1
bHQgaXMgdG8gZW1pdCBzZWNvbmRzIGFuZCBkcm9wIHRyYWlsaW5nIHplcm9zIGFmdGVyIHRoZSBk
ZWNpbWFsJworICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjAw
WicpOworICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjMwWicp
OworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKCksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRa
Jyk7CisKKyAgICAvLyB0cnVuY2F0ZXMgdG8gbWludXRlCisgICAgW2kxLCBpMiwgaTNdLmZvckVh
Y2goKGkpID0+IHNob3VsZEJlKGkudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnIH0p
LCAnMTk3Ni0xMS0xOFQxNToyM1onKSk7CisKKyAgICAvLyBvdGhlciBzbWFsbGVzdFVuaXRzIGFy
ZSBhbGlhc2VzIGZvciBmcmFjdGlvbmFsIGRpZ2l0cworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5n
KHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vj
b25kRGlnaXRzOiAwIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5p
dDogJ21pbGxpc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiAzIH0pKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pY3Jv
c2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA2IH0pKTsK
KyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ25hbm9zZWNvbmQnIH0p
LCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDkgfSkpOworCisgICAgLy8g
dHJ1bmNhdGUgb3IgcGFkIHRvIDIgcGxhY2VzCisgICAgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAyIH07CisgICAgICAgIHNob3VsZEJlKGkxLnRv
U3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzowMC4wMFonKTsKKyAgICAgICAgc2hv
dWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjAwWicpOwor
ICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMTJaJyk7CisgICAgfQorICAgIC8vIHBhZCB0byA3IHBsYWNlcworICAgIHsKKyAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNyB9OworICAgICAgICBz
aG91bGRCZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAuMDAwMDAw
MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlv
bnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0MDAwWicpOworICAgIH0KKworICAgIC8vIHJv
dW5kIHRvIG5lYXJlc3QKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDog
J21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0xOFQxNToy
NFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6
IDMsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjNaJyk7CisgICAgLy8gcm91bmQgdXAKKyAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxs
ZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0xMS0xOFQx
NToyNFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdp
dHM6IDMsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjRa
Jyk7CisgICAgLy8gcm91bmQgZG93bgorICAgIFsnZmxvb3InLCAndHJ1bmMnXS5mb3JFYWNoKChy
b3VuZGluZ01vZGUpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoeyBzbWFsbGVz
dFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzWicpOwor
ICAgICAgICBzaG91bGRCZShpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDMs
IHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOworICAgIH0pOwor
CisgICAgeworICAgICAgICAvLyByb3VuZGluZyBkb3duIGlzIHRvd2FyZHMgdGhlIEJpZyBCYW5n
LCBub3QgdG93YXJkcyAxIEJDRQorICAgICAgICBjb25zdCBpNCA9IFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnLTAwMDA5OS0xMi0xNVQxMjowMDowMC41WicpOworICAgICAgICBzaG91bGRCZShpNC50
b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcsIHJvdW5kaW5nTW9kZTogJ2Zsb29yJyB9
KSwgJy0wMDAwOTktMTItMTVUMTI6MDA6MDBaJyk7CisKKyAgICAgICAgLy8gcm91bmRpbmcgY2Fu
IGFmZmVjdCBhbGwgdW5pdHMKKyAgICAgICAgY29uc3QgaTUgPSBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OTk5WicpOworICAgICAgICBzaG91bGRCZShp
NS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDgsIHJvdW5kaW5nTW9kZTogJ2hh
bGZFeHBhbmQnIH0pLCAnMjAwMC0wMS0wMVQwMDowMDowMC4wMDAwMDAwMFonKTsKKyAgICB9Cit9
CisKKy8vIGxlYXAgc2Vjb25kIGlzIGNvbnN0cmFpbmVkCitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzIwMTYtMTItMzFUMjM6NTk6NjBaJyl9YCwgJzIwMTYtMTItMzFUMjM6NTk6
NTlaJyk7CisvLyB2YXJpYW50IHRpbWUgc2VwYXJhdG9ycworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4IDE1OjIzWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAw
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4dDE1OjIz
WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gdmFyaWFudCBVVEMgZGVzaWduYXRv
cgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzeicp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjAwWicpOworLy8gYW55IG51bWJlciBvZiBkZWNpbWFsIHBs
YWNlcworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOwor
c2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEy
MzRaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsKK3Nob3VsZEJlKGAke1RlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NVonKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xMjM0NVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTZaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzNDU2WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyMzQ1NjdaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKTsK
K3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MjM0NTY3OFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3OFonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODla
Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5WicpOworLy8gdmFyaWFudCBkZWNp
bWFsIHNlcGFyYXRvcgorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4VDE1OjIzOjMwLDEyWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworLy8gdmFy
aWFudCBtaW51cyBzaWduCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTU6MjM6MzAuMTJcdTIyMTIwMjowMCcpfWAsICcxOTc2LTExLTE4VDE3OjIzOjMwLjEy
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCdcdTIyMTIwMDk5OTktMTEt
MThUMTU6MjM6MzAuMTJaJyl9YCwgJy0wMDk5OTktMTEtMThUMTU6MjM6MzAuMTJaJyk7CisvLyBt
aXh0dXJlIG9mIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjErMDAw
MCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4
VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEt
MThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1OjIzOjMwLjErMDAw
MCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5J
bnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5
NzYxMTE4VDE1OjIzOjMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAw
OjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFs
Lkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTUyMzMwLjErMDAwMCcpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjFaJyk7CisvLyBvcHRpb25hbCBwYXJ0cworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwKzAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTVaJyl9YCwgJzE5NzYtMTEtMThUMTU6MDA6MDBaJyk7CisvLyBpZ25vcmVzIGFueSBzcGVjaWZp
ZWQgY2FsZW5kYXIKKy8vIEZJWE1FOiBwYXJzZSBjYWxlbmRhcgorLy8gc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpbdS1jYT1k
aXNjb3JkXScpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKTsKKy8vIG5vIGp1
bmsgYXQgZW5kIG9mIHN0cmluZworc2hvdWxkVGhyb3coKCkgPT4gVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVpqdW5rJyksIFJhbmdlRXJyb3IpOwor
CisvLyBGb3IgY29udmVuaWVuY2UgaW4gc2V2ZXJhbCB0ZXN0cworY29uc3QgZXBvY2ggPSBuZXcg
VGVtcG9yYWwuSW5zdGFudCgwbik7Citjb25zdCBtaW5WYWx1ZSA9IG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKK2NvbnN0IG1heFZhbHVlID0gbmV3
IFRlbXBvcmFsLkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbik7CisKKy8vIGFk
ZCgpCisKK3sKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBob3VyczogMSB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCAzNjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgaG91
cnM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0zNjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hv
dWxkQmUoZXBvY2guYWRkKHsgbWludXRlczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCA2MF8wMDBf
MDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbnV0ZXM6IC0xIH0pLmVwb2No
TmFub3NlY29uZHMsIC02MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7
IHNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMG4pOworICAgIHNo
b3VsZEJlKGVwb2NoLmFkZCh7IHNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAw
MF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWlsbGlzZWNvbmRzOiAxIH0p
LmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7
IG1pbGxpc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMG4pOworICAg
IHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pY3Jvc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRz
LCAxXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pY3Jvc2Vjb25kczogLTEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFu
b3NlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMW4pOworICAgIHNob3VsZEJlKGVwb2No
LmFkZCh7IG5hbm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMW4pOworfQorCit7
CisgICAgLy8gbWF4IGR1cmF0aW9uIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGFueSBJbnN0YW50Cisg
ICAgc2hvdWxkQmUobWluVmFsdWUuYWRkKHsgaG91cnM6IDQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5h
bm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhW
YWx1ZS5hZGQoeyBob3VyczogLTQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5W
YWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBtaW51
dGVzOiAyODgwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5h
bm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5hZGQoeyBtaW51dGVzOiAtMjg4MF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWluVmFsdWUuYWRkKHsgc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMCB9
KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91
bGRCZShtYXhWYWx1ZS5hZGQoeyBzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMCB9KS5lcG9jaE5h
bm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAvLyBub3RlLCB1bnNh
ZmUgaW50ZWdlcnMgZnJvbSBoZXJlIG9uOyB0aGUgbXVsdGlwbGljYXRpb24gdG8gY29udmVydAor
ICAgIC8vIG1pbGxpc2Vjb25kcyBhbmQgbWljcm9zZWNvbmRzIHRvIG5hbm9zZWNvbmRzIHNob3Vs
ZCB0YWtlIHBsYWNlIGluIHRoZQorICAgIC8vIGJpZ2ludCBkb21haW4uCisgICAgc2hvdWxkQmUo
bWluVmFsdWUuYWRkKHsgbWlsbGlzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwXzAwMCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZSht
YXhWYWx1ZS5hZGQoeyBtaWxsaXNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZSht
aW5WYWx1ZS5hZGQoeyBtaWNyb3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRC
ZShtYXhWYWx1ZS5hZGQoeyBtaWNyb3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWluVmFsdWUuYWRkKHsgbmFub3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAw
MF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbmFub3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAw
XzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29u
ZHMpOworfQorCit7CisgICAgLy8gb3ZlcmZsb3dpbmcgNjQgYml0cworICAgIGNvbnN0IGV4cDY0
ID0gMiAqKiA2NDsKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNl
Y29uZHMnLCAnbWljcm9zZWNvbmRzJ10uZm9yRWFjaCgodW5pdCkgPT4geworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IGV4cDY0IH0pLCBSYW5nZUVycm9yKTsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiAtZXhwNjQgfSks
IFJhbmdlRXJyb3IpOworICAgIH0pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG5hbm9zZWNv
bmRzOiBleHA2NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNm4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG5hbm9zZWNvbmRzOiAtZXhwNjQgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxv
d2luZyAxMjggYml0cworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxp
c2Vjb25kcycsICdtaWNyb3NlY29uZHMnLCAnbmFub3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9
PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTogTnVtYmVy
Lk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVw
b2NoLmFkZCh7IFt1bml0XTogLU51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAg
IH0pOworfQorCisvLyBzdWJ0cmFjdCgpCisKK3sKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFj
dCh7IGhvdXJzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0zNjAwXzAwMF8wMDBfMDAwbik7Cisg
ICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBob3VyczogLTEgfSkuZXBvY2hOYW5vc2Vjb25k
cywgMzYwMF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWlu
dXRlczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91
bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pbnV0ZXM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDYw
XzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBzZWNvbmRzOiAx
IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBv
Y2guc3VidHJhY3QoeyBzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IDEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRy
YWN0KHsgbWlsbGlzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBuKTsK
KyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogMSB9KS5lcG9jaE5h
bm9zZWNvbmRzLCAtMV8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pY3Jv
c2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xbik7
CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogLTEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgMW4pOworfQorCit7CisgICAgLy8gbWF4IGR1cmF0aW9uIHRoYXQgY2FuIGJl
IGFkZGVkIHRvIGFueSBJbnN0YW50CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBo
b3VyczogNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFu
b3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgaG91cnM6IC00OF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBtaW51dGVzOiAyODgwXzAwMDBfMDAw
MCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBz
aG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IC0yODgwXzAwMDBfMDAwMCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRC
ZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IHNlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDAgfSkuZXBvY2hO
YW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWlu
VmFsdWUuc3VidHJhY3QoeyBzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICAvLyBub3RlLCB1bnNhZmUg
aW50ZWdlcnMgZnJvbSBoZXJlIG9uOyB0aGUgbXVsdGlwbGljYXRpb24gdG8gY29udmVydAorICAg
IC8vIG1pbGxpc2Vjb25kcyBhbmQgbWljcm9zZWNvbmRzIHRvIG5hbm9zZWNvbmRzIHNob3VsZCB0
YWtlIHBsYWNlIGluIHRoZQorICAgIC8vIGJpZ2ludCBkb21haW4uCisgICAgc2hvdWxkQmUobWF4
VmFsdWUuc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVw
b2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJl
KG1pblZhbHVlLnN1YnRyYWN0KHsgbWlsbGlzZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDAg
fSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hv
dWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBf
MDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsK
KyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogLTE3MjgwMF8w
MDAwXzAwMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9z
ZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAx
NzI4MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbmFu
b3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29u
ZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworfQorCit7CisgICAgLy8gb3ZlcmZsb3dp
bmcgNjQgYml0cworICAgIGNvbnN0IGV4cDY0ID0gMiAqKiA2NDsKKyAgICBbJ2hvdXJzJywgJ21p
bnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJ10uZm9yRWFj
aCgodW5pdCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5zdWJ0cmFjdCh7
IFt1bml0XTogZXhwNjQgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiBlcG9jaC5zdWJ0cmFjdCh7IFt1bml0XTogLWV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICB9
KTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiBleHA2NCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAtZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywg
MTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5nIDEyOCBi
aXRzCisgICAgWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywg
J21pY3Jvc2Vjb25kcycsICduYW5vc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IE51bWJlci5NQVhf
VkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5z
dWJ0cmFjdCh7IFt1bml0XTogLU51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAg
IH0pOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDk2MmQ1MjQ2MjUyNWFmYmIyOTZkOWFjZmQ2ZDhh
MGExNDRmMjBiMzQuLmFlZDYzNGIxOGZjYTZmYTkwOTY0YzhlOTEyYzdhYjYzMmYzYjMxZTcgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKQEAgLTIzLDcgKzIzLDggQEAgc2tpcDoKICAgICAtIGNhbGxhYmxlLWJv
dW5kYXJ5LXJlYWxtcwogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0Nh
bGVuZGFyCi0gICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50CisgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRl
VGltZUlTTwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvTm93CiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L1BsYWluRGF0ZVRpbWUKQEAgLTM0LDcgKzM1LDggQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL1RpbWVab25lCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9ab25l
ZERhdGVUaW1lCiAgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAtIHRl
c3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50CisgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwv
SW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lCisgICAgLSB0ZXN0L2ludGw0MDIvVGVt
cG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAgLSB0ZXN0L2lu
dGw0MDIvVGVtcG9yYWwvTm93CiAgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvUGxhaW5EYXRl
CiAgICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQpAQCAtMjQ3LDYgKzI0
OSw3IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90
b3R5cGUvdG9TdHJpbmcvc21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKICAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9jYWxlbmRhci10
ZW1wb3JhbC1vYmplY3QuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9u
L3Byb3RvdHlwZS90b3RhbC91bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKKyAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3NtYWxsZXN0dW5pdC1w
bHVyYWxzLWFjY2VwdGVkLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRp
bWUvY29tcGFyZS9jYWxlbmRhci10ZW1wb3JhbC1vYmplY3QuanMKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL1BsYWluVGltZS9mcm9tL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwog
ICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS9lcXVhbHMv
Y2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCkBAIC0yNzIsNiArMjc1LDEzIEBAIHNraXA6CiAg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvc3VidHJhY3Qv
b3JkZXItb2Ytb3BlcmF0aW9ucy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVy
YXRpb24vcHJvdG90eXBlL3RvdGFsL2RhdGV1bnRpbC1maWVsZC5qcwogCisgICAgIyBEZXBlbmRz
IG9uIFRlbXBvcmFsLlRpbWVab25lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1u
b24taW50ZWdlci5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90
b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itb3V0LW9mLXJh
bmdlLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90
b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci13cm9uZy10eXBlLmpzCisg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90
aW1lem9uZS1zdHJpbmctZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLmpzCisKICAgICAjIERlcGVuZHMg
b24gVGVtcG9yYWwuWm9uZWREYXRlVGltZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
RHVyYXRpb24vY29tcGFyZS9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtbmVnYXRpdmUtZXBvY2hu
YW5vc2Vjb25kcy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vY29t
cGFyZS9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29u
ZHNmb3Itbm9uLWludGVnZXIuanMKQEAgLTI5OSw2ICszMDksMTEgQEAgc2tpcDoKICAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9yZWxhdGl2ZXRv
LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itbm9uLWludGVn
ZXIuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90
b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29u
ZHNmb3Itb3V0LW9mLXJhbmdlLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJh
dGlvbi9wcm90b3R5cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdl
dG9mZnNldG5hbm9zZWNvbmRzZm9yLXdyb25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0luc3RhbnQvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L2Zyb20vYXJndW1lbnQtem9uZWRkYXRl
dGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUv
ZXF1YWxzL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3NpbmNlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMK
KyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3VudGlsL2Fy
Z3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1Bs
YWluVGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtbmVnYXRpdmUtZXBvY2huYW5v
c2Vjb25kcy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBh
cmUvYXJndW1lbnQtem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zv
ci1ub24taW50ZWdlci5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1l
L2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vj
b25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKQEAgLTMzNCw1ICszNDksNiBAQCBza2lwOgogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3JvdW5kL2JhbGFuY2Ut
bmVnYXRpdmUtcmVzdWx0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlv
bi9wcm90b3R5cGUvcm91bmQvcm91bmQtbmVnYXRpdmUtcmVzdWx0LmpzCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvc3VidHJhY3QvYmFsYW5jZS1uZWdh
dGl2ZS1yZXN1bHQuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJv
dG90eXBlL3VudGlsL2luc3RhbnQtc3RyaW5nLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3NpbmNlL2JhbGFuY2UtbmVnYXRpdmUtdGltZS11bml0
cy5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS91
bnRpbC9iYWxhbmNlLW5lZ2F0aXZlLXRpbWUtdW5pdHMuanMK
</data>
<flag name="commit-queue"
          id="466931"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442436</attachid>
            <date>2021-10-25 16:11:14 -0700</date>
            <delta_ts>2021-10-25 18:41:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211025161113.patch</filename>
            <type>text/plain</type>
            <size>143239</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
Y2Y4MDVkN2U4NDk0NDQwZTlhN2RmNWY2NTI0NGFkZTNmMzAxNjE5Li4yOGEwZTJhNzQzNGNlNDJj
NzQzYjEyZmUyMzhjODE0ZDYxZWNiMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0yNSAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFp
bEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdWzMyYml0XSBEb24ndCBzcGVjdWxhdGUgQ2Vs
bCBvbiBQdXRCeVZhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA3YmQ4OWU4ODY1YmZlZmU3ZGJmZGM2YmUwZDRkYzgwZWViYTgw
Y2FjLi5jYmNmNTJmMTVkZDcwNjRhZWQzMWVkNGFjMzU2OWYwMWJmMmVkMWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDIxLTEwLTI1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlh
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaDogRG9uJ3QgdXNlIGJ1aWx0aW4gb3BlcmF0aW9ucyBpZiBfX2ludDEyOCBpcwor
ICAgICAgICAgIGJlaW5nIGVtdWxhdGVkIHVzaW5nIFdURjo6SW50MTI4LiBBbHNvIHdvcmsgYXJv
dW5kIENsYW5nL0xpbnV4IGJ1ZworICAgICAgICAgIHdoZXJlIF9fYnVpbHRpbl9tdWxfb3ZlcmZs
b3coKSBkb2Vzbid0IHdvcmsgb24gX19pbnQxMjguCisgICAgICAgICAgU2VlIGh0dHBzOi8vYnVn
cy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDQKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGgu
aDoKKyAgICAgICAgKFdURjo6dGltZVRvTVMpOiBNb3ZlZCBmcm9tIEpTRGF0ZU1hdGguaC4KKwor
MjAyMS0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtXVEZdIE1ha2UgSW50MTI4IG9wZXJhdG9yKiBjb25zdGV4cHIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHJlbW92ZSBNU1ZDIFg2NCAoc28sIFdp
bmRvd3Mgb25seSkgc3dpdGNoaW5nIGluIEludDEyOCBvcGVyYXRvciogc2luY2UKKyAgICAgICAg
aXQgYnJlYWtzIGNvbnN0ZXhwci1uZXNzIG9mIG9wZXJhdG9yKiwgd2hpY2ggbWFrZXMgd3JpdGlu
ZyBjb2RlIGRpZmZpY3VsdC4KKyAgICAgICAgV2UgY2FuIGJyaW5nIHRoaXMga2luZCBvZiBvcHRp
bWl6YXRpb24gYmFjayB3aGVuIEMrKzIwIHN0ZDo6aXNfY29uc3RhbnRfZXZhbHVhdGVkKCkKKyAg
ICAgICAgYmVjb21lcyBhdmFpbGFibGUuCisKKyAgICAgICAgKiB3dGYvSW50MTI4Lmg6CisgICAg
ICAgIChXVEY6Om9wZXJhdG9yKik6CisKIDIwMjEtMTAtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRvcHQgYnJpZGdlX2Nhc3QgYW5kIG1ha2VW
ZWN0b3IgaW4gYSBmZXcgbW9yZSBwbGFjZXMsIGluY2x1ZGluZyBjYXNlcyB3aGVyZSBhZG9wdENG
L05TIHdhcyB1c2VkIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOGI5MTgyY2VkMTAxOTUxYThkMDA1YjA2YjdlMTdjMTk2MWFkYTA3Ni4uOTJiZjk1NjNi
ZjlkZjliODNlY2U4NTM0MjViMjk1NzZhMzEyNmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1Rf
TFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3Bw
CiAgICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggNWM0N2FmOTlkNDE3OGIyYzllNjRkMjU1ZThlOTMzYzA4MDEyNDFkNi4uNzY4MTMw
YjBiNzAzZWFlMjA1NjE4M2FiNjhhNzQzNTZmMjc3ZjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2
ICsxNzUsOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1
Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9y
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNw
cAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAK
KyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMTEyMjlkNTdiMmIzYmU4OGYx
ODBjYzZlODA3MTczNWVlNGNmYTllYy4uNjVmNDk2ZjI4MmM3MTA3ODk2MDJjNThhNTVmMWZjZTk4
ZGJkZDJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2Jq
ZWN0Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5YTYzOTIzN2Y4YjI5ZDZjZmU4OGM2Y2Jj
MjFkNmE5MmM1YjczMzkyLi40ZWNhZTNmMDU5ODEzOThjYmY2M2E0Njc5ZWU4ZGZjZmViNDY4NmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjAwLDYg
KzIwMCw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmgg
XAogICAgIFRlbXBvcmFsTm93Lmx1dC5oIFwKICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAg
ICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGVjNTZjMTBlYWEwZTRmMDZhMmUzMGUzYWFiNjQ2YTBmMGRiYjY4Yzgu
LmFhZTEwYmM0YjM2NWZjNjdhZWZlNzI3MTYwZDBiNTMzMmUxNTZhYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xOTc0LDYgKzE5NzQsMTEgQEAKIAkJRTNGRjc1MzMxRDlDRUEx
ODAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJ
VEdldHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
MTEyRUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdE
M0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oICovOyB9OworCQlGNkQ2N0Q0
MjI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcw
MDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0
NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggKi87IH07CisJCUY2RDY3RDQ3MjZG
OTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEw
MDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZE
NjdENDgyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZG
OTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi87IH07CiAJ
CUY2RjE1MDIxMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3
MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA0MTU1MjI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZp
c2l0b3JNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTA1RkFGRDFGRTRDRURBMDAwOTMyMzAgLyogRGVwcmVjYXRlZEluc3BlY3RvclZh
bHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTJENkExMTFGQkQ0OTFEMDAwMjQ1RjQgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAg
Ki87IH07CkBAIC01MzcwLDYgKzUzNzUsMTQgQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3
IC8qIFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3
RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8q
IFRlbXBvcmFsSW5zdGFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZW1wb3JhbEluc3RhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2
N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NkQ2N0QzQzI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0QyNkY5MDJFNzAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2
N0Q0NTI2RjkxMzBBMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBC
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1w
b3JhbE5vdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE5vdy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYg
LyogVGVtcG9yYWxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGVtcG9yYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYx
NTAxQTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTcxMDQsNiArNzExNyw4IEBACiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0
IC8qIFN5bWJvbFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYz
MzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUUzQzQ2MzA2
MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAor
CQkJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ci5sdXQuaCAqLywKKwkJCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBU
ZW1wb3JhbE9iamVjdC5sdXQuaCAqLywKIAkJCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyog
V2FzbU9wcy5oICovLAogCQkJCUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovLApAQCAtODA3Myw2ICs4MDg4LDEyIEBA
CiAJCQkJQTNDN0VEQjQyNkIwREIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvci5oICovLAogCQkJCUEzQzdFREI1MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJCQlBM0M3RURCMDI2QjBEQjM2MDA0QzM0QzUgLyogVGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZS5oICovLAorCQkJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnQuY3BwICovLAorCQkJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAqLywKKwkJCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUY2RDY3RDNDMjZGOTAy
RTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3
RDNEMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovLAor
CQkJCUY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
aCAqLywKIAkJCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuY3BwICov
LAogCQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJ
CUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCkBAIC0x
MDgxNiw2ICsxMDgzNywxMSBAQAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1w
b3JhbER1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0
QzUgLyogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
M0M3RURCNjI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRl
bXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2
RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZG
MTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTM4NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKaW5kZXggZGQ4Y2I2MjcyNDFiZTg4Y2VlZjA3NDU5Yzg1ZWYzYzhhOWY4YzgzNy4uMmQ1
ZmM0ZjM1NGJiZmQ0ZDk5MTRjYjJhYzIxNzA1MWY0MzFmMTEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dApAQCAtMTAyMCw2ICsxMDIwLDkgQEAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAogcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAog
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5jcHAKaW5kZXggNTliMWM3ZWY1YjM5M2QyZGE0OWU0MjY2OTk0NDAzNjY3Njhi
OWE1MC4uNDEwOTA0MDgyNzU4YTEzYzY0YjU2YTdiZGU0YmI3ODg5ZDI1Y2NkMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKIAog
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTg3Nyw2ICs4Nzks
MzcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQ
bGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWUKICAgICB9KTsKIH0KIAorc3RkOjpvcHRpb25h
bDxFeGFjdFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGVtcG9yYWxJbnN0YW50U3Ry
aW5nCisgICAgLy8gVGVtcG9yYWxJbnN0YW50U3RyaW5nIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1l
Wm9uZU9mZnNldFJlcXVpcmVkCisgICAgLy8gICAgIERhdGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGlt
ZVNwZWMgVGltZVpvbmVPZmZzZXRSZXF1aXJlZAorCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyBUaW1l
Wm9uZU9mZnNldFJlcXVpcmVkIDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXQgVGltZVpv
bmVCcmFja2V0ZWRBbm5vdGF0aW9uX29wdAorCisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9y
UGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGlt
ZT4geworICAgICAgICBhdXRvIGRhdGV0aW1lID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAg
ICAgICBpZiAoIWRhdGV0aW1lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgYXV0byBbZGF0ZSwgbWF5YmVUaW1lLCBtYXliZVRpbWVab25lXSA9IGRhdGV0aW1lLnZh
bHVlKCk7CisgICAgICAgIGlmICghbWF5YmVUaW1lWm9uZSB8fCAoIW1heWJlVGltZVpvbmUtPm1f
eiAmJiAhbWF5YmVUaW1lWm9uZS0+bV9vZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyIGFubm90YXRpb24KKyAg
ICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAgICAgUGxhaW5UaW1lIHRpbWU7CisgICAgICAgIGlmIChtYXliZVRpbWUpCisg
ICAgICAgICAgICB0aW1lID0gbWF5YmVUaW1lLnZhbHVlKCk7CisKKyAgICAgICAgaW50NjRfdCBv
ZmZzZXQgPSBtYXliZVRpbWVab25lLT5tX3ogPyAwIDogKm1heWJlVGltZVpvbmUtPm1fb2Zmc2V0
OworICAgICAgICByZXR1cm4geyBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRl
LnllYXIoKSwgZGF0ZS5tb250aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51
dGUoKSwgdGltZS5zZWNvbmQoKSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25k
KCksIHRpbWUubmFub3NlY29uZCgpLCBvZmZzZXQpIH07CisgICAgfSk7Cit9CisKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWZvcm1hdHRpbWV6b25l
b2Zmc2V0c3RyaW5nCiBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBv
ZmZzZXQpCiB7CkBAIC05NjksNSArMTAwMiwxMjkgQEAgYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29u
c3QgRHVyYXRpb24mIGR1cmF0aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitFeGFjdFRpbWUg
RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwg
dWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVk
IG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNldCkKK3sKKyAg
ICBBU1NFUlQoeSA+PSAtOTk5OTk5ICYmIHkgPD0gOTk5OTk5KTsKKyAgICBBU1NFUlQobW9uID49
IDEgJiYgbW9uIDw9IDEyKTsKKyAgICBBU1NFUlQoZCA+PSAxICYmIGQgPD0gMzEpOworICAgIEFT
U0VSVChoID49IDAgJiYgaCA8PSAyMyk7CisgICAgQVNTRVJUKG1pbiA+PSAwICYmIG1pbiA8PSA1
OSk7CisgICAgQVNTRVJUKHMgPj0gMCAmJiBzIDw9IDU5KTsKKyAgICBBU1NFUlQobXMgPj0gMCAm
JiBtcyA8PSA5OTkpOworICAgIEFTU0VSVChtaWNyb3MgPj0gMCAmJiBtaWNyb3MgPD0gOTk5KTsK
KyAgICBBU1NFUlQobnMgPj0gMCAmJiBucyA8PSA5OTkpOworCisgICAgZG91YmxlIGRhdGVEYXlz
ID0gZGF0ZVRvRGF5c0Zyb20xOTcwKHksIG1vbiAtIDEsIGQpOworICAgIGRvdWJsZSB0aW1lTXMg
PSB0aW1lVG9NUyhoLCBtaW4sIHMsIG1zKTsKKyAgICBkb3VibGUgdXRjTXMgPSBkYXRlRGF5cyAq
IG1zUGVyRGF5ICsgdGltZU1zOworICAgIEludDEyOCB1dGNOcyA9IHN0YXRpY19jYXN0PEludDEy
OD4odXRjTXMpICogMScwMDAnMDAwICsgbWljcm9zICogMTAwMCArIG5zOworICAgIHJldHVybiBF
eGFjdFRpbWUgeyB1dGNOcyAtIG9mZnNldCB9OworfQorCit1c2luZyBDaGVja2VkSW50MTI4ID0g
Q2hlY2tlZDxJbnQxMjgsIFJlY29yZE92ZXJmbG93PjsKKworc3RhdGljIENoZWNrZWRJbnQxMjgg
Y2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkb3VibGUgbikKK3sKKyAgICAvLyBCYXNlZCBvbiBf
X2ZpeGRmdGkoKSBhbmQgX19maXh1bnNkZnRpKCkgZnJvbSBjb21waWxlcl9ydDoKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4
MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXhp
bnRfaW1wbC5pbmMKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3Qv
YmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0
L2xpYi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwuaW5jCisKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludCBzaWduaWZpY2FuZEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0
cyAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaXRzID0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46OmRpZ2l0cyAtIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6ZGlnaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4cG9uZW50QmlhcyA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2V4cG9uZW50IC0gMTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ2NF90IGltcGxpY2l0Qml0ID0gdWludDY0X3QgeyAxIH0gPDwgc2lnbmlmaWNh
bmRCaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbmlmaWNhbmRNYXNrID0g
aW1wbGljaXRCaXQgLSB1aW50NjRfdCB7IDEgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2
NF90IHNpZ25NYXNrID0gdWludDY0X3QgeyAxIH0gPDwgKHNpZ25pZmljYW5kQml0cyArIGV4cG9u
ZW50Qml0cyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBhYnNNYXNrID0gc2lnbk1h
c2sgLSB1aW50NjRfdCB7IDEgfTsKKworICAgIC8vIEJyZWFrIG4gaW50byBzaWduLCBleHBvbmVu
dCwgc2lnbmlmaWNhbmQgcGFydHMuCisgICAgY29uc3QgdWludDY0X3QgYml0cyA9ICpyZWludGVy
cHJldF9jYXN0PHVpbnQ2NF90Kj4oJm4pOworICAgIGNvbnN0IHVpbnQ2NF90IG5BYnMgPSBiaXRz
ICYgYWJzTWFzazsKKyAgICBjb25zdCBpbnQgc2lnbiA9IGJpdHMgJiBzaWduTWFzayA/IC0xIDog
MTsKKyAgICBjb25zdCBpbnQgZXhwb25lbnQgPSAobkFicyA+PiBzaWduaWZpY2FuZEJpdHMpIC0g
ZXhwb25lbnRCaWFzOworICAgIGNvbnN0IHVpbnQ2NF90IHNpZ25pZmljYW5kID0gKG5BYnMgJiBz
aWduaWZpY2FuZE1hc2spIHwgaW1wbGljaXRCaXQ7CisKKyAgICAvLyBJZiBleHBvbmVudCBpcyBu
ZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB6ZXJvLgorICAgIGlmIChleHBvbmVudCA8IDApCisgICAg
ICAgIHJldHVybiB7IDAgfTsKKworICAgIC8vIElmIHRoZSB2YWx1ZSBpcyB0b28gbGFyZ2UgZm9y
IHRoZSBpbnRlZ2VyIHR5cGUsIG92ZXJmbG93LgorICAgIGlmIChleHBvbmVudCA+PSAxMjgpCisg
ICAgICAgIHJldHVybiB7IFdURjo6UmVzdWx0T3ZlcmZsb3dlZCB9OworCisgICAgLy8gSWYgMCA8
PSBleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cywgcmlnaHQgc2hpZnQgdG8gZ2V0IHRoZSByZXN1
bHQuCisgICAgLy8gT3RoZXJ3aXNlLCBzaGlmdCBsZWZ0LgorICAgIEludDEyOCByZXN1bHQgeyBz
aWduaWZpY2FuZCB9OworICAgIGlmIChleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cykKKyAgICAg
ICAgcmVzdWx0ID4+PSBzaWduaWZpY2FuZEJpdHMgLSBleHBvbmVudDsKKyAgICBlbHNlCisgICAg
ICAgIHJlc3VsdCA8PD0gZXhwb25lbnQgLSBzaWduaWZpY2FuZEJpdHM7CisgICAgcmVzdWx0ICo9
IHNpZ247CisgICAgcmV0dXJuIHsgcmVzdWx0IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RU
aW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ubW9udGhzKCkpOwor
ICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlz
KCkpOworCisgICAgQ2hlY2tlZEludDEyOCByZXN1bHROcyB7IG1fZXBvY2hOYW5vc2Vjb25kcyB9
OworCisgICAgLy8gVGhlIGR1cmF0aW9uJ3MgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBt
aWxsaXNlY29uZHMgc2hvdWxkIGJlCisgICAgLy8gYWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1i
aXQgaW50LiAyKjFlOCAyNC1ob3VyIGRheXMgaXMgdGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNw
YW4gZm9yIGV4YWN0IHRpbWUsIHNvIGlmIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlv
biBleGNlZWRzCisgICAgLy8gdGhhdCwgdGhlbiB3ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBDaGVj
a2VkSW50MTI4IGhvdXJzID0gY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5ob3Vy
cygpKTsKKyAgICByZXN1bHROcyArPSBob3VycyAqIEV4YWN0VGltZTo6bnNQZXJIb3VyOworICAg
IENoZWNrZWRJbnQxMjggbWludXRlcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRp
b24ubWludXRlcygpKTsKKyAgICByZXN1bHROcyArPSBtaW51dGVzICogRXhhY3RUaW1lOjpuc1Bl
ck1pbnV0ZTsKKyAgICBDaGVja2VkSW50MTI4IHNlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRv
SW50MTI4KGR1cmF0aW9uLnNlY29uZHMoKSk7CisgICAgcmVzdWx0TnMgKz0gc2Vjb25kcyAqIEV4
YWN0VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgQ2hlY2tlZEludDEyOCBtaWxsaXNlY29uZHMgPSBj
aGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpKTsKKyAgICBy
ZXN1bHROcyArPSBtaWxsaXNlY29uZHMgKiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7Cisg
ICAgQ2hlY2tlZEludDEyOCBtaWNyb3NlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4
KGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpKTsKKyAgICByZXN1bHROcyArPSBtaWNyb3NlY29uZHMg
KiBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMgKz0gY2hlY2tlZENh
c3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5uYW5vc2Vjb25kcygpKTsKKyAgICBpZiAocmVzdWx0
TnMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
RXhhY3RUaW1lIHJlc3VsdCB7IHJlc3VsdE5zLnZhbHVlKCkgfTsKKyAgICBpZiAoIXJlc3VsdC5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworSW50MTI4IEV4YWN0VGltZTo6cm91bmQoSW50MTI4IHF1YW50aXR5LCB1bnNpZ25l
ZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2Rl
KQoreworICAgIEludDEyOCBpbmNyZW1lbnROcyB7IGluY3JlbWVudCB9OworICAgIHN3aXRjaCAo
dW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiBpbmNyZW1lbnROcyAqPSBFeGFj
dFRpbWU6Om5zUGVySG91cjsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTog
aW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pbnV0ZTsgYnJlYWs7CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6OlNlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1BlclNlY29u
ZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiBpbmNyZW1lbnRO
cyAqPSBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9y
YWxVbml0OjpNaWNyb3NlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pY3Jv
c2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAg
IHJldHVybiByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnROcywgcm91
bmRpbmdNb2RlKTsKK30KKworLy8gRGlmZmVyZW5jZUluc3RhbnQgKCBuczEsIG5zMiwgcm91bmRp
bmdJbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWRpZmZlcmVuY2VpbnN0YW50CitJ
bnQxMjggRXhhY3RUaW1lOjpkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwgdW5zaWduZWQgaW5j
cmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkgY29u
c3QKK3sKKyAgICBJbnQxMjggZGlmZiA9IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kcyAtIG1fZXBv
Y2hOYW5vc2Vjb25kczsKKyAgICByZXR1cm4gcm91bmQoZGlmZiwgaW5jcmVtZW50LCB1bml0LCBy
b3VuZGluZ01vZGUpOworfQorCitFeGFjdFRpbWUgRXhhY3RUaW1lOjpyb3VuZCh1bnNpZ25lZCBp
bmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBj
b25zdAoreworICAgIHJldHVybiBFeGFjdFRpbWUgeyByb3VuZChtX2Vwb2NoTmFub3NlY29uZHMs
IGluY3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2RlKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBJ
U084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuaAppbmRleCBjNzQyNGFlOTMxZWZlMWI1MGRjMGFjZDIyYmYyMWI5OTcwOTU2YTZmLi4x
Y2JiNmI0ZmQ4MDVkMTU3MTJjOTg1YjlkY2M4MjQxNzdlZTc5MjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYv
SW50MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIElTTzg2MDEgewpAQCAtNzks
NiArODAsMTIyIEBAIHByaXZhdGU6CiAgICAgc3RkOjphcnJheTxkb3VibGUsIG51bWJlck9mVGVt
cG9yYWxVbml0cz4gbV9kYXRhIHsgfTsKIH07CiAKK2NsYXNzIEV4YWN0VGltZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQoRXhhY3RUaW1lKTsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIg
RXhhY3RUaW1lKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBFeGFjdFRpbWUoY29uc3QgRXhh
Y3RUaW1lJikgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBFeGFjdFRpbWUoSW50
MTI4IGVwb2NoTmFub3NlY29uZHMpIDogbV9lcG9jaE5hbm9zZWNvbmRzKGVwb2NoTmFub3NlY29u
ZHMpIHsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoU2Vjb25k
cyhpbnQ2NF90IGVwb2NoU2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUo
SW50MTI4IHsgZXBvY2hTZWNvbmRzIH0gKiBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGlu
dDY0X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAgeworICAgICAgICByZXR1cm4gRXhhY3RUaW1l
KEludDEyOCB7IGVwb2NoTWlsbGlzZWNvbmRzIH0gKiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNv
bmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBmcm9tRXBvY2hNaWNy
b3NlY29uZHMoaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVy
biBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWNyb3NlY29uZHMgfSAqIEV4YWN0VGltZTo6bnNQ
ZXJNaWNyb3NlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBFeGFjdFRpbWUgZnJvbUlTT1BhcnRz
QW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24sIHVpbnQ4X3QgZCwgdW5zaWduZWQgaCwg
dW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25lZCBtcywgdW5zaWduZWQgbWljcm9zLCB1
bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpOworCisgICAgY29uc3RleHByIGludDY0X3QgZXBv
Y2hTZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9lcG9jaE5hbm9zZWNvbmRzIC8gRXhh
Y3RUaW1lOjpuc1BlclNlY29uZCk7CisgICAgfQorICAgIGNvbnN0ZXhwciBpbnQ2NF90IGVwb2No
TWlsbGlzZWNvbmRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4obV9lcG9jaE5hbm9zZWNvbmRzIC8g
RXhhY3RUaW1lOjpuc1Blck1pbGxpc2Vjb25kKTsKKyAgICB9CisgICAgY29uc3RleHByIGludDY0
X3QgZXBvY2hNaWNyb3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFs
aWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3Nl
Y29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4
cHIgSW50MTI4IGVwb2NoTmFub3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQor
CisgICAgY29uc3RleHByIGludCBuYW5vc2Vjb25kc0ZyYWN0aW9uKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fZXBvY2hOYW5vc2Vjb25kcyAlIEV4YWN0
VGltZTo6bnNQZXJTZWNvbmQpOworICAgIH0KKworICAgIFN0cmluZyBhc1N0cmluZygpIGNvbnN0
CisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGlmIChtX2Vw
b2NoTmFub3NlY29uZHMgPCAwKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLScpOwor
ICAgICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIC1tX2Vwb2NoTmFub3NlY29uZHMpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVyLCBtX2Vwb2No
TmFub3NlY29uZHMpOworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIH0K
KworICAgIC8vIElzVmFsaWRFcG9jaE5hbm9zZWNvbmRzICggZXBvY2hOYW5vc2Vjb25kcyApCisg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXN2
YWxpZGVwb2NobmFub3NlY29uZHMKKyAgICBjb25zdGV4cHIgYm9vbCBpc1ZhbGlkKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gRXhhY3RUaW1lOjpt
aW5WYWx1ZSAmJiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gRXhhY3RUaW1lOjptYXhWYWx1ZTsKKyAg
ICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoRXhhY3RUaW1lIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA8IG90aGVyLm1fZXBv
Y2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShFeGFj
dFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNv
bmRzIDw9IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9lcG9jaE5hbm9zZWNvbmRzID09IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9
CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShFeGFjdFRpbWUgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzICE9IG90aGVyLm1fZXBvY2hO
YW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShFeGFjdFRp
bWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRz
ID49IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisgICAgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2Vwb2NoTmFub3NlY29uZHMgPiBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IGFkZChEdXJhdGlvbikgY29uc3Q7CisgICAgSW50
MTI4IGRpZmZlcmVuY2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBv
cmFsVW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKyAgICBFeGFjdFRpbWUgcm91bmQodW5zaWdu
ZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggZGF5UmFuZ2VTZWNvbmRzIHsgODY0MDAn
MDAwMDAwMDAgfTsgLy8gMWU4IGRheXMKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Bl
ck1pY3Jvc2Vjb25kIHsgMTAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVy
TWlsbGlzZWNvbmQgeyAxJzAwMCcwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBu
c1BlclNlY29uZCB7IDEnMDAwJzAwMCcwMDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEy
OCBuc1Blck1pbnV0ZSA9IG5zUGVyU2Vjb25kICogNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBJ
bnQxMjggbnNQZXJIb3VyID0gbnNQZXJNaW51dGUgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEludDEyOCBtaW5WYWx1ZSA9IC1kYXlSYW5nZVNlY29uZHMgKiBuc1BlclNlY29uZDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEludDEyOCBtYXhWYWx1ZSA9IGRheVJhbmdlU2Vjb25kcyAqIG5zUGVy
U2Vjb25kOworCisgICAgc3RhdGljIHZvaWQgYXNTdHJpbmdJbXBsKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIEludDEyOCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSA+IDkpCisgICAg
ICAgICAgICBhc1N0cmluZ0ltcGwoYnVpbGRlciwgdmFsdWUgLyAxMCk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSAlIDEwKSArICcwJyk7CisgICAg
fQorCisgICAgc3RhdGljIEludDEyOCByb3VuZChJbnQxMjggcXVhbnRpdHksIHVuc2lnbmVkIGlu
Y3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpOworCisgICAgSW50MTI4IG1fZXBv
Y2hOYW5vc2Vjb25kcyB7IH07Cit9OworCiBjbGFzcyBQbGFpblRpbWUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEKFBsYWluVGltZSk7CiBwdWJsaWM6CkBAIC0xNjgsNSArMjg1LDcgQEAg
U3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNp
b24sIHVuc2lnbmVkPiBwcmVjaXNpb24KIAogYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVy
YXRpb24mKTsKIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdW
aWV3KTsKKwogfSAvLyBuYW1lc3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmlu
ZGV4IGE1MDlkOTJkNjNlOTViZWYwMDYyMGEzMDZhM2E1NWYwNGE2NTYzODIuLmMxN2Q3ZTc0MjFk
MTllOTA1NGY1NjkzZTcwOGQxYTJmZjU4NGIwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC05NCw2ICs5NCw4IEBAIHBy
aXZhdGU6CiAKICAgICBVRGF0ZUludGVydmFsRm9ybWF0KiBjcmVhdGVEYXRlSW50ZXJ2YWxGb3Jt
YXRJZk5lY2Vzc2FyeShKU0dsb2JhbE9iamVjdCopOwogCisgICAgc3RhdGljIGRvdWJsZSBoYW5k
bGVEYXRlVGltZVZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKICAgICBlbnVtIGNs
YXNzIFdlZWtkYXkgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAg
IGVudW0gY2xhc3MgRXJhIDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcgfTsK
ICAgICBlbnVtIGNsYXNzIFllYXIgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDc1ODRjZjBjZmIxMjllYmNmOGFiZjQ1
M2YzZWJlYWY0Yjk3MWNmM2IuLjZlNGQ2MjVjNTAyZjIwYzQzYmY5ZDYzOGEyZWIzYTgyZjgyYzMz
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTAs
NiArOTEsMjcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAorLy8gSGFuZGxlRGF0ZVRpbWVWYWx1ZSAoIGRh
dGVUaW1lRm9ybWF0LCB4ICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLWhhbmRsZWRhdGV0aW1ldmFsdWUKK2RvdWJsZSBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB4KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoeC5pc1VuZGVmaW5lZCgp
KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRhdGVOb3dJbXBsKCkudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KSk7CisKKyAgICAvLyBGSVhNRToKKyAgICAvLyAgLSBBZGQgYWxsIG9m
IHRoZSBvdGhlciBUZW1wb3JhbCB0eXBlcworICAgIC8vICAtIFdvcmsgaW4gZXBvY2ggbmFub3Nl
Y29uZHMKKyAgICAvLyAgLSBSZXR1cm4gVURhdGVGb3JtYXQgYW5kIFVEYXRlSW50ZXJ2YWxGb3Jt
YXQgZGVwZW5kaW5nIG9uIHRoZSB0eXBlCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgeCk7CisgICAgaWYgKGluc3RhbnQp
CisgICAgICAgIHJldHVybiBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE1pbGxpc2Vjb25kcygp
OworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBXVEY6OnRpbWVDbGlwKHgudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KSkpOworfQorCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTEwMCwxNCArMTIyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZSwgKEpTR2xvYmFsT2JqZWN0KgogICAg
IEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+
KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBkYXRlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKLSAgICBkb3VibGUgdmFsdWU7Ci0KLSAgICBpZiAoZGF0ZS5pc1VuZGVm
aW5lZCgpKQotICAgICAgICB2YWx1ZSA9IGRhdGVOb3dJbXBsKCkudG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgdmFsdWUgPSBXVEY6OnRpbWVDbGlwKGRhdGUudG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIH0KKyAgICBkb3VibGUgdmFsdWUgPSBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkYXRlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0LT5mb3JtYXQoZ2xvYmFsT2JqZWN0LCB2YWx1
ZSkpKTsKIH0KQEAgLTE1NiwxNCArMTcyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCAoSlNHbG9iYWwKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKICAgICBKU1Zh
bHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJsZSB2YWx1ZTsKLQot
ICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwo
KS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAgICB2YWx1ZSA9IFdU
Rjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQorICAgIGRvdWJs
ZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxP
YmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1h
dC0+Zm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTg1LDkgKzE5
NSw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVGdW5jRm9ybWF0UmFuZ2UsIChKU0dsb2JhbE9iCiAgICAgaWYgKHN0YXJ0RGF0ZVZhbHVlLmlz
VW5kZWZpbmVkKCkgfHwgZW5kRGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgb3IgZW5k
RGF0ZSBpcyB1bmRlZmluZWQiX3MpOwogCi0gICAgZG91YmxlIHN0YXJ0RGF0ZSA9IHN0YXJ0RGF0
ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IElu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0
RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGRv
dWJsZSBlbmREYXRlID0gZW5kRGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAg
ZG91YmxlIGVuZERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBlbmREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgaWYgKHN0YXJ0RGF0ZSA+IGVuZERhdGUpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdl
ciB0aGFuIGVuZERhdGUiX3MpOwpAQCAtMjEyLDkgKzIyMiw5IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2VUb1BhcnRz
LCAoSlNHCiAgICAgaWYgKHN0YXJ0RGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kRGF0ZVZh
bHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgb3IgZW5kRGF0ZSBpcyB1bmRlZmluZWQiX3MpOwog
Ci0gICAgZG91YmxlIHN0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZVZhbHVlLnRvTnVtYmVyKGdsb2JhbE9i
amVjdCk7CisgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxl
RGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0ZVZhbHVlKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIGRvdWJsZSBlbmREYXRlID0gZW5kRGF0ZVZh
bHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgZG91YmxlIGVuZERhdGUgPSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBlbmREYXRlVmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKHN0YXJ0
RGF0ZSA+IGVuZERhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0aGFuIGVuZERhdGUiX3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDE3NGIwZjhhZTdm
ZWRiYjMyNDNmNDRhZWRlNTQzMGNiZjJmMjQxYjIuLjRiNTk2YzI3YTZiMzRhMjFiOTk0OTdjMTQ3
OWZjZjc2OGQ1MDgyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3
dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC0yMzEsNiArMjMyLDYyIEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVlKQogICAgIHJldHVybiBj
cmVhdGVGcm9tSW1wbChnbG9iYWxPYmplY3QsIHVuc2lnbmVkVmFsdWUsIHNpZ24pOwogfQogCitK
U0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSW50MTI4IHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoIXZhbHVl
KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZVplcm8oZ2xvYmFsT2Jq
ZWN0KSk7CisKKyAgICBVSW50MTI4IHVuc2lnbmVkVmFsdWU7CisgICAgYm9vbCBzaWduID0gZmFs
c2U7CisgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICB1bnNpZ25lZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8VUludDEyOD4oLSh2YWx1ZSArIDEpKSArIDE7CisgICAgICAgIHNpZ24gPSB0cnVlOwor
ICAgIH0gZWxzZQorICAgICAgICB1bnNpZ25lZFZhbHVlID0gdmFsdWU7CisKKyAgICBpZiAodW5z
aWduZWRWYWx1ZSA8PSBVSU5UNjRfTUFYKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVu
c2lnbmVkVmFsdWUpLCBzaWduKSk7CisKKyAgICBpZiBjb25zdGV4cHIgKHNpemVvZihEaWdpdCkg
PT0gOCkgeworICAgICAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0aChnbG9i
YWxPYmplY3QsIDIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKworICAgICAgICBEaWdpdCBsb3dCaXRzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlKSk7CisgICAgICAgIERpZ2l0IGhpZ2hCaXRzID0g
c3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+
IDY0KSk7CisKKyAgICAgICAgQVNTRVJUKGhpZ2hCaXRzKTsKKworICAgICAgICBiaWdJbnQtPnNl
dERpZ2l0KDAsIGxvd0JpdHMpOworICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDEsIGhpZ2hCaXRz
KTsKKyAgICAgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgICAgICByZXR1cm4gYmlnSW50
OworICAgIH0KKworICAgIEFTU0VSVChzaXplb2YoRGlnaXQpID09IDQpOworCisgICAgRGlnaXQg
ZGlnaXQwID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25l
ZFZhbHVlKSk7CisgICAgRGlnaXQgZGlnaXQxID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+IDMyKSk7CisgICAgRGlnaXQgZGlnaXQyID0g
c3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+
IDY0KSk7CisgICAgRGlnaXQgZGlnaXQzID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih1bnNpZ25lZFZhbHVlID4+IDk2KSk7CisKKyAgICBBU1NFUlQoZGlnaXQyIHx8
IGRpZ2l0Myk7CisKKyAgICBpbnQgbGVuZ3RoID0gZGlnaXQzID8gNCA6IDM7CisgICAgSlNCaWdJ
bnQqIGJpZ0ludCA9IGNyZWF0ZVdpdGhMZW5ndGgoZ2xvYmFsT2JqZWN0LCBsZW5ndGgpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgYmlnSW50LT5zZXRE
aWdpdCgwLCBkaWdpdDApOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgZGlnaXQxKTsKKyAgICBi
aWdJbnQtPnNldERpZ2l0KDIsIGRpZ2l0Mik7CisgICAgaWYgKGRpZ2l0MykKKyAgICAgICAgYmln
SW50LT5zZXREaWdpdCgzLCBkaWdpdDMpOworICAgIGJpZ0ludC0+c2V0U2lnbihzaWduKTsKKyAg
ICByZXR1cm4gYmlnSW50OworfQorCiBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZUZyb20oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYm9vbCB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
aAppbmRleCA4OTYxYzFkOGZiNjEwMWFiNjhkOTcwZjAyYjcxZWRjYjMzNGRmZDc4Li44OGYzYzM5
MDM5OTEyMmUyMzdhZTJhMTg2MTE2MzNiNmRhNjc5NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlIDx3dGYvQ2FnZWRVbmlxdWVQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc0LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVpbnQzMl90IHZhbHVlKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9i
YWxPYmplY3QqLCBpbnQ2NF90IHZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
SlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCB2YWx1ZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFs
T2JqZWN0KiwgSW50MTI4IHZhbHVlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20o
SlNHbG9iYWxPYmplY3QqLCBib29sIHZhbHVlKTsKICAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0
ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpOwogCkBAIC02MDUsOCArNjA3LDYg
QEAgcHJpdmF0ZToKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50NjRfdCB0b0Jp
Z1VJbnQ2NEhlYXAoSlNCaWdJbnQqKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0b1VpbnQ2NEhlYXAoSlNCaWdJbnQqKTsKLQogICAgIGlu
bGluZSBzdGF0aWMgc2l6ZV90IG9mZnNldE9mRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTQmlnSW50LCBtX2RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcAppbmRleCBkYWU5YjNhOWJjOTJmYmFmZDRlMzAxOTRi
NGQxYThkODNkYmQyY2ZmLi41MjE5ZjhmNzI0MmI4NmY5NDBlODI4MjM1ODRlNjFmZTJiYTQ5ZTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcApAQCAt
MjY5LDExICsyNjksNiBAQCBMb2NhbFRpbWVPZmZzZXQgRGF0ZUNhY2hlOjpsb2NhbFRpbWVPZmZz
ZXQoZG91YmxlIG1pbGxpc2Vjb25kc0Zyb21FcG9jaCwgV1RGOjpUaQogICAgIHJldHVybiBvZmZz
ZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBob3VyLCBkb3Vi
bGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCi17Ci0gICAgcmV0dXJuICgoKGhvdXIgKiBX
VEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0ZSArIHNlYykg
KiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOwotfQotCiBkb3VibGUgRGF0ZUNhY2hlOjpncmVnb3Jp
YW5EYXRlVGltZVRvTVMoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIGRvdWJsZSBtaWxsaXNl
Y29uZHMsIFdURjo6VGltZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKICAgICBkb3VibGUgZGF5ID0g
ZGF0ZVRvRGF5c0Zyb20xOTcwKHQueWVhcigpLCB0Lm1vbnRoKCksIHQubW9udGhEYXkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggOWVjOTEyYzVkMDkzMDMwZjk0MjMxYjI4YjkzOGQxMzUwN2NhYTIwNC4uNTI4NTFkNTExNWQ3
OTc5YWFkNWVkOGE1NWM4Y2QwNjQ2NGU3ZTEyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjEwLDYgKzIxMCw4IEBACiAjaW5j
bHVkZSAiVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb24uaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWlu
VGltZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCkBAIC0xMjU0
LDYgKzEyNTYsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBp
bml0LnNldChUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBkdXJhdGlvblByb3RvdHlwZSkpOwogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAg
bV9pbnN0YW50U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChjb25zdCBJbml0
aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwor
ICAgICAgICAgICAgICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlw
ZSA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0
KFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
aW5zdGFudFByb3RvdHlwZSkpOworICAgICAgICAgICAgfSk7CisKICAgICAgICAgbV9wbGFpblRp
bWVTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVy
PFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTIxNjYsNiArMjE3NSw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwg
VmlzaXRvciYgdmlzaXRvcikKIAogICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9kdXJhdGlvblN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2luc3RhbnRTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wbGFpblRpbWVTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZGU3MzY0NDYzMmY1ZWM4OWZjOGJmNWQ2M2ZmMTA4NjQ2YzdlMzI4MC4uZjY1MGEzZDg5ZWYy
YTVlMDVhYmNjYTE5M2U2ZDU2Yzc0MjZjZTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zMzQsNiArMzM0LDcgQEAgcHVibGljOgog
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsZW5kYXJT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
ZHVyYXRpb25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1faW5zdGFudFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9wbGFpblRpbWVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fdGltZVpvbmVTdHJ1Y3R1cmU7CiAKQEAgLTg5Miw2
ICs4OTMsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkg
eyByZXR1cm4gbV9jYWxlbmRhclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IGR1cmF0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGluc3RhbnRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2luc3Rh
bnRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbGFpblRpbWVTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1
Y3R1cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1lWm9uZVN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcAppbmRleCA5MzRiZWIwOWE3MGI3NmZmYTJlYzg5MzVjYTg3OGQyMGZj
ODlmNjZmLi4yOWIzNTQ2NmQ5OGVmZjlmNjRmZDA5NzlkYzkwMDc0MWJkZmE3YTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJUZW1w
b3JhbE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMTY0LDYgKzE2NSwzMSBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0
b1RlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBU
ZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1
cmUoKSwgV1RGTW92ZShyZXN1bHQpKTsKIH0KIAorLy8gVG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlv
biAoIHRlbXBvcmFsRHVyYXRpb25MaWtlLCBkaXNhbGxvd2VkRmllbGRzICkKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvbGltaXRlZHRlbXBvcmFs
ZHVyYXRpb24KK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1
cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gdG9J
U084NjAxRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihkdXJhdGlv
bikpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50
IHNpZ24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGZvciAoVGVtcG9y
YWxVbml0IHVuaXQgOiBkaXNhbGxvd2VkVW5pdHMpIHsKKyAgICAgICAgaWYgKGR1cmF0aW9uW3Vu
aXRdKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
bWFrZVN0cmluZygiQWRkaW5nICJfcywgdGVtcG9yYWxVbml0UGx1cmFsUHJvcGVydHlOYW1lKHZt
LCB1bml0KS5wdWJsaWNOYW1lKCksICIgbm90IHN1cHBvcnRlZCBieSBUZW1wb3JhbC5JbnN0YW50
LiBUcnkgVGVtcG9yYWwuWm9uZWREYXRlVGltZSBpbnN0ZWFkIl9zKSk7CisgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGR1cmF0aW9uOworfQor
CiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb24uaAppbmRleCA4MmYyZDVkNjVjMjJhYzRjNDA3Yzg2MzQzNDJmZjY2OWNhMGEx
ODk2Li5kMjc3MjA5Y2RkZDc3NWIxMTVkMTdkMWUxY2VmYzE0Mjc3ZDQ4MDlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCkBAIC00Niw2
ICs0Niw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKICAgICBzdGF0aWMgVGVtcG9y
YWxEdXJhdGlvbiogdG9UZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisgICAgc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvTGltaXRlZER1cmF0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlz
YWxsb3dlZFVuaXRzKTsKICAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvbiogZnJvbShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlOTgxODViMmYyZjQ3
OWM2YjMwNDNlNGQ4N2E0ZTRmYmQxZjRhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKQEAgLTAsMCArMSw0NTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIK
KyNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbEluc3RhbnQ6
OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50KSB9OworCitTdHJ1Y3R1cmUqIFRlbXBv
cmFsSW5zdGFudDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbEluc3RhbnQ6OlRlbXBvcmFsSW5z
dGFudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpFeGFjdFRpbWUgZXhh
Y3RUaW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9leGFjdFRpbWUoZXhh
Y3RUaW1lKQoreworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRp
bWUpCit7CisgICAgQVNTRVJUKGV4YWN0VGltZS5pc1ZhbGlkKCkpOworICAgIGF1dG8qIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsSW5zdGFudD4odm0uaGVhcCkp
IFRlbXBvcmFsSW5zdGFudCh2bSwgc3RydWN0dXJlLCBleGFjdFRpbWUpOworICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKKy8vIENyZWF0ZVRl
bXBvcmFsSW5zdGFudCAoIGVwb2NoTmFub3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBv
cmFsaW5zdGFudAorVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlm
VmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVNPODYwMTo6RXhhY3RUaW1lIGV4
YWN0VGltZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGlmICghZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhleGFjdFRpbWUuYXNTdHJpbmcoKSwgIiBl
cG9jaCBuYW5vc2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9y
YWwuSW5zdGFudCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmplY3QtPmlu
c3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworVGVtcG9yYWxJbnN0YW50KiBUZW1w
b3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2YWx1ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTVmFsdWUgZXBvY2hOYW5vc2Vjb25kcyA9IHZhbHVlLnRvQmlnSW50KGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisK
KyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGVwb2NoTmFub3NlY29uZHMuaXNCaWdJbnQzMigp
KSB7CisgICAgICAgIGludDMyX3QgdG90YWwgPSBlcG9jaE5hbm9zZWNvbmRzLmJpZ0ludDMyQXNJ
bnQzMigpOworICAgICAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsgdG90YWwgfTsK
KyAgICAgICAgQVNTRVJUKGV4YWN0VGltZS5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gY3Jl
YXRlKHZtLCBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUgOiBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1
Y3R1cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisjZW5kaWYKKworICAgIEpTQmlnSW50KiBiaWdp
bnQgPSBhc0hlYXBCaWdJbnQoZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgYm9vbCBiaWdJbnRUb29M
b25nID0gZmFsc2U7CisgICAgSW50MTI4IHRvdGFsOworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9m
KEpTQmlnSW50OjpEaWdpdCkgPT0gNCkgeworICAgICAgICBJbnQxMjggZDAgeyBiaWdpbnQtPmxl
bmd0aCgpID4gMCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwIH07CisgICAgICAgIEludDEyOCBkMSB7
IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAgICAg
SW50MTI4IGQyIHsgYmlnaW50LT5sZW5ndGgoKSA+IDIgPyBiaWdpbnQtPmRpZ2l0KDIpIDogMCB9
OworICAgICAgICB0b3RhbCA9IGQyIDw8IDY0IHwgZDEgPDwgMzIgfCBkMDsKKyAgICAgICAgYmln
SW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAzOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA4KTsKKyAgICAgICAgSW50MTI4IGxv
dyB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAgICAg
ICAgSW50MTI4IGhpZ2ggeyBiaWdpbnQtPmxlbmd0aCgpID4gMSA/IGJpZ2ludC0+ZGlnaXQoMSkg
OiAwIH07CisgICAgICAgIHRvdGFsID0gaGlnaCA8PCA2NCB8IGxvdzsKKyAgICAgICAgYmlnSW50
VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworICAgIH0KKyAgICBJU084NjAxOjpFeGFj
dFRpbWUgZXhhY3RUaW1lIHsgdG90YWwgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6IDEpIH07CisK
KyAgICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgeworICAgICAg
ICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTAp
OworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNjb3BlLmNs
ZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVt
YmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIg
ZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlIGZvciBU
ZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVj
dC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1RlbXBvcmFsSW5z
dGFudCAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtdG90ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0
YW50Ojp0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVt
VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJp
dHM8VGVtcG9yYWxJbnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4oaXRlbVZhbHVlKTsKKworICAgIC8vIEZJWE1FOiB3aGVuIFRlbXBvcmFsLlpvbmVk
RGF0ZVRpbWUgbGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsWm9u
ZWREYXRlVGltZT4odm0pKQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFpv
bmVkRGF0ZVRpbWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBTdHJpbmcgc3Ry
aW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEV4YWN0VGltZSA9
IElTTzg2MDE6OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2VkRXhhY3RUaW1l
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3Ry
aW5nKCInIl9zLCBlbGxpcHNpemVBdCgxMDAsIHN0cmluZyksICInIGlzIG5vdCBhIHZhbGlkIFRl
bXBvcmFsLkluc3RhbnQgc3RyaW5nIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ5Q3JlYXRlSWZWYWxpZChnbG9i
YWxPYmplY3QsIHBhcnNlZEV4YWN0VGltZS52YWx1ZSgpKSk7Cit9CisKKy8vIFRlbXBvcmFsLklu
c3RhbnQuZnJvbSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5z
dGFudDo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoaXRlbVZh
bHVlLmluaGVyaXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKSB7CisgICAgICAgIElTTzg2MDE6OkV4
YWN0VGltZSBleGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRlbVZhbHVlKS0+
ZXhhY3RUaW1lKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7Cit9CisKKy8vIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVwb2NoU2Vjb25kcyApCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21l
cG9jaHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hT
ZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hTZWNvbmRz
VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaFNlY29uZHMg
PSBlcG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVtYmVyVG9CaWdJbnQgc3Rl
cCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRzKSkgeworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaFNlY29uZHMsICIg
aXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggc2Vjb25kcyJfcykpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhh
Y3RUaW1lID0gSVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hTZWNvbmRzKGVwb2NoU2Vjb25k
cyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2Jh
bE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2No
TWlsbGlzZWNvbmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWxsaXNlY29u
ZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNlY29u
ZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pbGxpc2Vjb25k
c1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgZXBvY2hNaWxsaXNl
Y29uZHMgPSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJU
b0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vjb25kcykpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmco
ZXBvY2hNaWxsaXNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBv
Y2ggbWlsbGlzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZy
b21FcG9jaE1pbGxpc2Vjb25kcyhlcG9jaE1pbGxpc2Vjb25kcyk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKSk7
Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzICggZXBvY2hN
aWNyb3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWNyb3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCog
VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzID0gZXBvY2hNaWNyb3Nl
Y29uZHNWYWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChlcG9jaE1p
Y3Jvc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBtaWNyb3NlY29uZHMg
PSBlcG9jaE1pY3Jvc2Vjb25kcy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgYXV0byBleGFj
dFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNyb3Nl
Y29uZHMpOworICAgICAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgICAgIHJl
dHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRp
bWUpOworICAgIH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0lu
dChlcG9jaE1pY3Jvc2Vjb25kcyk7CisgICAgYm9vbCBiaWdJbnRUb29Mb25nOworICAgIGlmIGNv
bnN0ZXhwciAoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gNCkKKyAgICAgICAgYmlnSW50VG9v
TG9uZyA9IGJpZ2ludC0+bGVuZ3RoKCkgPiAyOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQo
c2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gOCk7CisgICAgICAgIGJpZ0ludFRvb0xvbmcgPSBi
aWdpbnQtPmxlbmd0aCgpID4gMTsKKyAgICB9CisgICAgaW50NjRfdCBtaWNyb3NlY29uZHMgPSBK
U0JpZ0ludDo6dG9CaWdJbnQ2NChiaWdpbnQpOworICAgIGF1dG8gZXhhY3RUaW1lID0gSVNPODYw
MTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hNaWNyb3NlY29uZHMobWljcm9zZWNvbmRzKTsKKworICAg
IGlmIChiaWdJbnRUb29Mb25nIHx8ICFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0
cmluZyBhcmdBc1N0cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7Cisg
ICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgc2NvcGUuY2xlYXJF
eGNlcHRpb24oKTsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIg
b2YiX3M7CisgICAgICAgIH0KKworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgbWFrZVN0cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9j
aCBtaWNyb3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFs
Lkluc3RhbnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0
dXJuIGNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGlt
ZSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMgKCBlcG9j
aE5hbm9zZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2NobmFub3NlY29uZHMKK1RlbXBvcmFsSW5zdGFudCog
VGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTmFub3NlY29uZHNWYWx1ZSkKK3sKKyAgICByZXR1cm4g
dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGVwb2NoTmFub3NlY29uZHNWYWx1ZSk7Cit9
CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSAoIG9uZSwgdHdvICkKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuY29tcGFyZQor
SlNWYWx1ZSBUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBvbmVWYWx1ZSwgSlNWYWx1ZSB0d29WYWx1ZSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvbmUgPSB0b0luc3RhbnQoZ2xvYmFsT2Jq
ZWN0LCBvbmVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIFRlbXBvcmFsSW5zdGFudCogdHdvID0gdG9JbnN0YW50KGdsb2JhbE9iamVjdCwgdHdvVmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAob25l
LT5leGFjdFRpbWUoKSA+IHR3by0+ZXhhY3RUaW1lKCkpCisgICAgICAgIHJldHVybiBqc051bWJl
cigxKTsKKyAgICBpZiAob25lLT5leGFjdFRpbWUoKSA8IHR3by0+ZXhhY3RUaW1lKCkpCisgICAg
ICAgIHJldHVybiBqc051bWJlcigtMSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKDApOworfQorCitJ
U084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbEluc3RhbnQ6OmRpZmZlcmVuY2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxJbnN0YW50KiBvdGhlciwgSlNWYWx1ZSBvcHRpb25z
VmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNtYWxsZXN0
ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IH0pOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IHNtYWxs
ZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCk7CisK
KyAgICBUZW1wb3JhbFVuaXQgZGVmYXVsdExhcmdlc3RVbml0ID0gc3RkOjptaW4oc21hbGxlc3RV
bml0LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCk7CisgICAgYXV0byBsYXJnZXN0ID0gdGVtcG9yYWxM
YXJnZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSwgZGVmYXVsdExhcmdlc3RVbml0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5p
dCBsYXJnZXN0VW5pdCA9IGxhcmdlc3QudmFsdWVfb3IoZGVmYXVsdExhcmdlc3RVbml0KTsKKwor
ICAgIGlmIChzbWFsbGVzdCAmJiBsYXJnZXN0ICYmIHNtYWxsZXN0IDwgbGFyZ2VzdCkgeworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSA9IHRlbXBvcmFsUm91bmRp
bmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBtYXhJbmNyZW1lbnQgPSBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0
KTsKKyAgICBBU1NFUlQobWF4SW5jcmVtZW50ICYmICptYXhJbmNyZW1lbnQgPD0gMTAwMCk7IC8v
IHVuYm91bmRlZCBpbmNyZW1lbnRzIGFyZSBpbXBvc3NpYmxlIHdpdGggVGVtcG9yYWwuSW5zdGFu
dAorICAgIHVuc2lnbmVkIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBtYXhJbmNyZW1lbnQsIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSW50MTI4IHJvdW5kZWREaWZmID0gZXhhY3RU
aW1lKCkuZGlmZmVyZW5jZShvdGhlci0+ZXhhY3RUaW1lKCksIGluY3JlbWVudCwgc21hbGxlc3RV
bml0LCByb3VuZGluZ01vZGUpOworICAgIC8vIE5PVEU6IER1cmF0aW9uIGZpZWxkcyBhcmUgY3Vy
cmVudGx5IGRvdWJsZXMsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mCisgICAgLy8gbmFub3NlY29u
ZHMgbWF5IG5vdCBmaXQgaW4gYSBkb3VibGUuIFRoaXMgbWF5IG5lZWQgdG8gY2hhbmdlIGlmIHRo
ZQorICAgIC8vIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIER1cmF0aW9uIGNoYW5nZXMuCisg
ICAgQVNTRVJUKHJvdW5kZWREaWZmIC8gMScwMDAnMDAwJzAwMCA8IElOVDY0X01BWCk7CisgICAg
ZG91YmxlIHNlY29uZHMgeyBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+
KHJvdW5kZWREaWZmIC8gMScwMDAnMDAwJzAwMCkpIH07CisgICAgZG91YmxlIG5hbm9zZWNvbmRz
UmVtYWluZGVyIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ2NF90Pihyb3Vu
ZGVkRGlmZiAlIDEnMDAwJzAwMCcwMDApKSB9OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHJlc3Vs
dCB7IDAsIDAsIDAsIDAsIDAsIDAsIHNlY29uZHMsIDAsIDAsIG5hbm9zZWNvbmRzUmVtYWluZGVy
IH07CisKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBkb3VibGUgbWF4aW11bUluY3JlbWVu
dChUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0KQoreworICAgIHN3aXRjaCAoc21hbGxlc3RVbml0
KSB7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IHJldHVybiAyNDsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6TWludXRlOiByZXR1cm4gMTQ0MDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6
U2Vjb25kOiByZXR1cm4gODY0MDA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25k
OiByZXR1cm4gOC42NGU3OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDogcmV0
dXJuIDguNjRlMTA7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHJldHVybiA4
LjY0ZTEzOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpZZWFyOgorICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpNb250aDoKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6V2VlazoKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6RGF5OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHsgfQorICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitJU084NjAxOjpFeGFjdFRpbWUgVGVtcG9y
YWxJbnN0YW50Ojpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9w
dGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3Qq
IG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21h
bGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVt
cG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWss
IFRlbXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBpZiAoIXNtYWxsZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3B0
aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVtcG9yYWxVbml0IHNt
YWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCk7
CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBkb3VibGUgaW5jcmVtZW50ID0g
dGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1J
bmNyZW1lbnQoc21hbGxlc3RVbml0KSwgdHJ1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIHJldHVybiBleGFjdFRpbWUoKS5yb3VuZChpbmNyZW1lbnQsIHNt
YWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5wcm90
b3R5cGUudG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQucHJvdG90eXBlLnRvc3RyaW5nCitTdHJp
bmcgVGVtcG9yYWxJbnN0YW50Ojp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3Qs
IG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBKU09i
amVjdCogdGltZVpvbmUgPSBudWxscHRyOworICAgIEpTVmFsdWUgdGltZVpvbmVWYWx1ZSA9IG9w
dGlvbnMtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRpbWVab25lKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghdGltZVpvbmVWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHRpbWVab25lID0gVGVtcG9yYWxUaW1lWm9uZTo6
ZnJvbShnbG9iYWxPYmplY3QsIHRpbWVab25lVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNl
Y29uZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9k
ZSA9IHRlbXBvcmFsUm91bmRpbmdNb2RlKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgUm91bmRpbmdN
b2RlOjpUcnVuYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNp
dCBkZWZhdWx0cy4KKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFByZWNp
c2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAgICAg
ICAgcmV0dXJuIHRvU3RyaW5nKHRpbWVab25lKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBu
ZXdFeGFjdFRpbWUgeyBleGFjdFRpbWUoKS5yb3VuZChkYXRhLmluY3JlbWVudCwgZGF0YS51bml0
LCByb3VuZGluZ01vZGUpIH07CisKKyAgICAvLyBGSVhNRTogTWlzc2luZywgcmVsaWVzIG9uIFRp
bWVab25lOgorICAgIC8vIDEuIExldCByb3VuZGVkSW5zdGFudCBiZSAhIENyZWF0ZVRlbXBvcmFs
SW5zdGFudChyb3VuZGVkTnMpLgorICAgIC8vIC4uLgorICAgIC8vIDEuIElmIF9vdXRwdXRUaW1l
Wm9uZV8gaXMgKnVuZGVmaW5lZCosIHRoZW4KKyAgICAvLyAgIDEuIFNldCBfb3V0cHV0VGltZVpv
bmVfIHRvICEgQ3JlYXRlVGVtcG9yYWxUaW1lWm9uZSgqIlVUQyIqKS4KKyAgICAvLyAxLiBMZXQg
X2lzb0NhbGVuZGFyXyBiZSAhIEdldElTTzg2MDFDYWxlbmRhcigpLgorICAgIC8vIDEuIExldCBf
ZGF0ZVRpbWVfIGJlID8gQnVpbHRpblRpbWVab25lR2V0UGxhaW5EYXRlVGltZUZvcihfb3V0cHV0
VGltZVpvbmVfLCBfaW5zdGFudF8sIF9pc29DYWxlbmRhcl8pLgorICAgIEpTT2JqZWN0KiBvdXRw
dXRUaW1lWm9uZSA9IHRpbWVab25lOworICAgIGlmIChvdXRwdXRUaW1lWm9uZSkgeworICAgICAg
ICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiBUZW1wb3JhbC5JbnN0
YW50LnRvU3RyaW5nKHt0aW1lWm9uZX0pIG5vdCBpbXBsZW1lbnRlZCB5ZXQiX3MpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiB0b1N0cmluZyhuZXdFeGFjdFRpbWUs
IHRpbWVab25lLCBkYXRhKTsKK30KKworLy8gVGVtcG9yYWxJbnN0YW50VG9TdHJpbmcgKCBpbnN0
YW50LCB0aW1lWm9uZSwgcHJlY2lzaW9uICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsaW5zdGFudHRvc3RyaW5nCitTdHJpbmcgVGVt
cG9yYWxJbnN0YW50Ojp0b1N0cmluZyhJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBKU09i
amVjdCogdGltZVpvbmUsIFByZWNpc2lvbkRhdGEgcHJlY2lzaW9uKQoreworICAgIEdyZWdvcmlh
bkRhdGVUaW1lIGdyZWdvcmlhbkRhdGVUaW1lIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPihleGFjdFRp
bWUuZXBvY2hNaWxsaXNlY29uZHMoKSksIExvY2FsVGltZU9mZnNldCB7IH0gfTsKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAvLyBJZiB0aGUgeWVhciBpcyBvdXRzaWRlIHRoZSBi
b3VuZHMgb2YgMTAwMCBhbmQgOTk5OSBpbmNsdXNpdmUgd2Ugd2FudCB0bworICAgIC8vIHVzZSB0
aGUgZXh0ZW5kZWQgeWVhciBmb3JtYXQgKFBhZElTT1llYXIpLgorICAgIHVuc2lnbmVkIHllYXJM
ZW5ndGggPSA0OworICAgIGlmIChncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkgPiA5OTk5IHx8IGdy
ZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA8IDEwMDApIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
Z3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpIDwgMCA/ICctJyA6ICcrJyk7CisgICAgICAgIHllYXJM
ZW5ndGggPSA2OworICAgIH0KKworICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocGFkKCcw
JywgeWVhckxlbmd0aCwgc3RkOjphYnMoZ3JlZ29yaWFuRGF0ZVRpbWUueWVhcigpKSksCisgICAg
ICAgICctJywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGgoKSArIDEpLAorICAg
ICAgICAnLScsIHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLm1vbnRoRGF5KCkpLAorICAg
ICAgICAnVCcsIHBhZCgnMCcsIDIsIGdyZWdvcmlhbkRhdGVUaW1lLmhvdXIoKSksCisgICAgICAg
ICc6JywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubWludXRlKCkpKSk7CisKKyAgICBz
dGF0aWMgY29uc3RleHByIGludCBuc1BlclNlY29uZCB7IDEnMDAwJzAwMCcwMDAgfTsKKyAgICBp
bnQgZnJhY3Rpb24geyBleGFjdFRpbWUubmFub3NlY29uZHNGcmFjdGlvbigpIH07CisgICAgaWYg
KGZyYWN0aW9uIDwgMCkKKyAgICAgICAgZnJhY3Rpb24gKz0gbnNQZXJTZWNvbmQ7CisKKyAgICBm
b3JtYXRTZWNvbmRzU3RyaW5nUGFydChidWlsZGVyLCBncmVnb3JpYW5EYXRlVGltZS5zZWNvbmQo
KSwgZnJhY3Rpb24sIHByZWNpc2lvbik7CisKKyAgICBpZiAodGltZVpvbmUpIHsKKyAgICAgICAg
Ly8gRklYTUU6IE1pc3NpbmcsIHJlbGllcyBvbiBUaW1lWm9uZToKKyAgICAgICAgLy8gICAxLiBM
ZXQgX3RpbWVab25lU3RyaW5nXyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldE9mZnNldFN0cmluZ0Zv
cihfdGltZVpvbmVfLCBfaW5zdGFudF8pLgorICAgICAgICBidWlsZGVyLmFwcGVuZCgnWicpOwor
ICAgIH0gZWxzZQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnWicpOworCisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZGZh
MmY5OGYwOTM3YzdlZmEzYWQ0MDU2YzM5YmExMjZhMzlhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaApAQCAtMCwwICsx
LDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnQgZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2bS50ZW1wb3JhbEluc3RhbnRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAg
IHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6
OkV4YWN0VGltZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxp
ZChKU0dsb2JhbE9iamVjdCosIElTTzg2MDE6OkV4YWN0VGltZSwgU3RydWN0dXJlKiA9IG51bGxw
dHIpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIHRvSW5z
dGFudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3Rh
bnQqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJ
bnN0YW50KiBmcm9tRXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAg
c3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlsbGlzZWNvbmRzKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbUVwb2NoTWlj
cm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFs
SW5zdGFudCogZnJvbUVwb2NoTmFub3NlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNWYWx1ZSBjb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CisKKyAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9leGFjdFRpbWUuZ2V0KCk7IH0KKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGRpZmZlcmVu
Y2UoSlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbEluc3RhbnQqLCBKU1ZhbHVlIG9wdGlvbnMpIGNv
bnN0OworICAgIElTTzg2MDE6OkV4YWN0VGltZSByb3VuZChKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNPYmplY3QqIHRp
bWVab25lID0gbnVsbHB0ciwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24gPSB7IHsgUHJlY2lzaW9u
OjpBdXRvLCAwIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9KSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKGV4YWN0VGltZSgpLCB0aW1lWm9uZSwgcHJlY2lzaW9u
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxJbnN0YW50KFZNJiwgU3RydWN0dXJl
KiwgSVNPODYwMTo6RXhhY3RUaW1lKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBwYXJz
ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAgc3RhdGljIElTTzg2
MDE6OkV4YWN0VGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKwor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoSVNPODYwMTo6RXhhY3RUaW1lLCBKU09iamVjdCog
dGltZVpvbmUsIFByZWNpc2lvbkRhdGEpOworCisgICAgUGFja2VkPElTTzg2MDE6OkV4YWN0VGlt
ZT4gbV9leGFjdFRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYWE0MjgwYTFjZTY3MDkwYTY3ODEzYzIxODY1YjJjNWUzZWVi
NjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
KTsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jRnJvbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21F
cG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWNyb3NlY29uZHMpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoTmFub3NlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSk7CisKK30KKworI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
KSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oCitA
YmVnaW4gdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JUYWJsZQorICBmcm9tICAgICAgICAgICAg
ICAgICAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hTZWNvbmRzICAgICAgIHRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBmcm9tRXBvY2hNaWxsaXNlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yRnVuY0Zyb21FcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9t
RXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9j
aE1pY3Jvc2Vjb25kcyAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRXBvY2hOYW5vc2Vjb25k
cyAgIHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBjb21wYXJlICAgICAgICAgICAgICAgIHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IqIFRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIGF1dG8qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGluc3RhbnRQcm90b3R5
cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxG
dW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsSW5zdGFudCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpOworCitUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBv
cmFsSW5zdGFudCwgY29uc3RydWN0VGVtcG9yYWxJbnN0YW50KQoreworfQorCit2b2lkIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZSogaW5zdGFudFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgMSwgIkluc3RhbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgaW5zdGFudFByb3RvdHlwZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIGluc3RhbnRQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VU
X0RFUklWRURfU1RSVUNUVVJFKHZtLCBpbnN0YW50U3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNaXNzaW5nIHJlcXVpcmVk
IGVwb2NoTmFub3NlY29uZHMgYXJndW1lbnQgdG8gVGVtcG9yYWwuSW5zdGFudCJfcyk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3Rh
bnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLCBzdHJ1Y3R1cmUpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihj
YWxsVGVtcG9yYWxJbnN0YW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW5zdGFudCIpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hTZWNvbmRzKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNvbmRzLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxsaXNl
Y29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBv
Y2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hOYW5vc2Vjb25kcyhnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0NvbXBhcmUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODdkOWRlMzIwMWIy
YzgzYWYzZGVkZTJhMjE4OTVhOGYyZjY5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTsKKworY2xhc3MgVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKK307CitTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWQ5OGNhYmIyMDA1NDViZDQ3YTU0MjJlYzhhOGVlZjVmZjIzMzBm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSVNPODYw
MS5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNBZGQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1JvdW5kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNFcXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04pOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1RvTG9jYWxlU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vjb25kcyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVH
ZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0
ZXJFcG9jaE5hbm9zZWNvbmRzKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuSW5zdGFudCIsICZCYXNl
OjpzX2luZm8sICZpbnN0YW50UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGluc3RhbnRQcm90b3R5cGVUYWJsZQor
ICBhZGQgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3QgICAgICAgICAgIHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIHVudGlsICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVW50aWwgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5jZSAgICAg
ICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IGVxdWFscyAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jRXF1YWxzICAg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgICAgdGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdG9KU09OICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1
bmNUb0pTT04gICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvTG9jYWxlU3Ry
aW5nICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAg
ZXBvY2hTZWNvbmRzICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoU2Vj
b25kcyAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE1pbGxp
c2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWxsaXNlY29uZHMg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWljcm9zZWNvbmRzICB0
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vjb25kcyAgRG9udEVudW18
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hOYW5vc2Vjb25kcyAgIHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxSZWFkT25seXxD
dXN0b21BY2Nlc3NvcgorQGVuZAorKi8KKworVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQoreworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitzdGF0aWMgY29uc3RleHByIHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzID0geworICAg
IFRlbXBvcmFsVW5pdDo6WWVhciwKKyAgICBUZW1wb3JhbFVuaXQ6Ok1vbnRoLAorICAgIFRlbXBv
cmFsVW5pdDo6V2VlaywKKyAgICBUZW1wb3JhbFVuaXQ6OkRheSwKK307CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9u
ID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0cyk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6
RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRpbWUoKS5hZGQoZHVyYXRp
b24pOworICAgIGlmICghbmV3RXhhY3RUaW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFu
Z2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
SW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsICpuZXdFeGFjdFRpbWUpKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jU3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAg
ICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRl
ZER1cmF0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgZGlzYWxsb3dl
ZEFkZGl0aW9uVW5pdHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RUaW1lID0gaW5z
dGFudC0+ZXhhY3RUaW1lKCkuYWRkKC1kdXJhdGlvbik7CisgICAgaWYgKCFuZXdFeGFjdFRpbWUp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTdWJ0cmFj
dGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJf
cyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFpbnN0
YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1w
b3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVl
IG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIElTTzg2MDE6OkR1cmF0aW9u
IHJlc3VsdCA9IGluc3RhbnQtPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBvdGhlciwgb3B0aW9u
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmR1cmF0aW9uU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zaW5jZSBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhl
ciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6
RHVyYXRpb24gcmVzdWx0ID0gb3RoZXItPmRpZmZlcmVuY2UoZ2xvYmFsT2JqZWN0LCBpbnN0YW50
LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBKU1ZhbHVlIG9wdGlv
bnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVk
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFy
Z3VtZW50Il9zKTsKKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0
YW50LT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5z
dGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgbmV3RXhh
Y3RUaW1lKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbElu
c3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnBy
b3RvdHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogb3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFu
dChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihpbnN0YW50LT5leGFjdFRpbWUoKSA9PSBvdGhlci0+ZXhhY3RUaW1lKCkpKTsKK30KKwor
Ly8gVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9TdHJpbmcoIFsgb3B0aW9ucyBdICkKKy8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQu
cHJvdG90eXBlLnRvc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIGluc3RhbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1w
b3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50
Il9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZygpKSkpOworfQorCisvLyBGSVhNRTogSXMgdGhp
cyBiZXR0ZXIgYXMgYSBKU0J1aWx0aW4/CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3Jt
YXR0ZXIgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgZm9ybWF0dGVyLT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gRklYTUU6IGNoYW5n
ZSBJbnRsRGF0ZVRpbWVGb3JtYXQgdG8gdXNlIGVwb2NoTmFub3NlY29uZHMKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3JtYXR0ZXItPmZvcm1hdChnbG9i
YWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5v
dCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0
YW50LmNvbXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hTZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoU2Vjb25k
cygpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTWlsbGlzZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlz
ZWNvbmRzKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWNyb3Nl
Y29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVh
cEJpZ0ludE9yQmlnSW50MzIoZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9j
aE1pY3Jvc2Vjb25kcygpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2No
TmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojpj
cmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hOYW5vc2Vj
b25kcygpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjhkZGZiMTQ2OTg5NzhiOGMwN2UxOGIyMGVjOTNkMzkyZDc5ODM5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQor
CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAg
ICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBmZjBiY2Zk
Y2Y4MmQyMjFkMWVjYjg1YThjMWI0NmI2NTFiNGRiNzM1Li44OTQ2YTBjYzYxMDQ4NGY4ODI0ZjVj
ZmRlN2NmNGI3Mzk4NWM5ZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbmNsdWRlICJUZW1w
b3JhbENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgiCisjaW5jbHVkZSA8d3RmL0ludDEy
OC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAtNjUsNiArNjgsMTMgQEAgc3RhdGlj
IEpTVmFsdWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmpl
Y3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlSW5zdGFu
dENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9i
amVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCkt
PnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBs
YWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1w
b3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmpl
Y3QpOwpAQCAtODksNiArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEBiZWdpbiB0ZW1wb3JhbE9i
amVjdFRhYmxlCiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJh
dGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgSW5zdGFu
dCAgICAgICAgY3JlYXRlSW5zdGFudENvbnN0cnVjdG9yICAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFp
blRpbWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpv
bmUgICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCkBAIC0zNzQsNiArMzg1LDE3IEBAIHZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ0Zy
YWN0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6CiAg
ICAgfQogfQogCisvLyBGb3JtYXRTZWNvbmRzU3RyaW5nUGFydCAoIHNlY29uZCwgbWlsbGlzZWNv
bmQsIG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtZm9ybWF0c2Vjb25kc3N0cmluZ3Bh
cnQKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
dW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSBwcmVjaXNp
b24pCit7CisgICAgaWYgKHByZWNpc2lvbi51bml0ID09IFRlbXBvcmFsVW5pdDo6TWludXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBidWlsZGVyLmFwcGVuZCgnOicsIHBhZCgnMCcsIDIsIHNl
Y29uZCkpOworICAgIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihidWlsZGVyLCBmcmFjdGlv
biwgcHJlY2lzaW9uLnByZWNpc2lvbik7Cit9CisKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9u
Um91bmRpbmdJbmNyZW1lbnQgKCB1bml0ICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLW1heGltdW10ZW1wb3JhbGR1cmF0aW9ucm91bmRpbmdpbmNy
ZW1lbnQKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoVGVt
cG9yYWxVbml0IHVuaXQpCkBAIC00MzUsNiArNDU3LDQzIEBAIGRvdWJsZSByb3VuZE51bWJlclRv
SW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUgbW9kZSkK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitzdGF0aWMgSW50MTI4IGFi
cyhJbnQxMjggeCkKK3sKKyAgICByZXR1cm4geCA8IDAgPyAteCA6IHg7Cit9CisKKy8vIFNhbWUg
YXMgYWJvdmUsIGJ1dCB3aXRoIEludDEyOAorSW50MTI4IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
SW50MTI4IHgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQoreworICAgIGlm
IChpbmNyZW1lbnQgPT0gMSkKKyAgICAgICAgcmV0dXJuIHg7CisKKyAgICBJbnQxMjggcXVvdGll
bnQgPSB4IC8gaW5jcmVtZW50OworICAgIEludDEyOCByZW1haW5kZXIgPSB4ICUgaW5jcmVtZW50
OworICAgIGlmICghcmVtYWluZGVyKQorICAgICAgICByZXR1cm4geDsKKworICAgIGJvb2wgc2ln
biA9IHJlbWFpbmRlciA8IDA7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSb3VuZGlu
Z01vZGU6OkNlaWw6CisgICAgICAgIGlmICghc2lnbikKKyAgICAgICAgICAgIHF1b3RpZW50Kys7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGbG9vcjoKKyAgICAgICAg
aWYgKHNpZ24pCisgICAgICAgICAgICBxdW90aWVudC0tOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kaW5nTW9kZTo6VHJ1bmM6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpIYWxmRXhwYW5kOgorICAgICAgICAvLyAiaGFsZiB1cCBhd2F5IGZyb20gemVybyIK
KyAgICAgICAgaWYgKGFicyhyZW1haW5kZXIgKiAyKSA+PSBpbmNyZW1lbnQpCisgICAgICAgICAg
ICBxdW90aWVudCArPSBzaWduID8gLTEgOiAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHF1b3RpZW50ICogaW5jcmVtZW50OworfQorCiBUZW1wb3JhbE92ZXJmbG93IHRvVGVt
cG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucykKIHsKICAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1wb3JhbE92ZXJmbG93PihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5vdmVyZmxv
dywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmlu
ZGV4IDc5MTU3OThjZGI5OGFiNzQ1ODNiOGM4YWMzNmE1NWQxYjQ1ZjFjMTQuLmFiM2IyOTMzZjUz
YThjYTZkNjYxZDI2ZjZkNzE5Yjc3OWMyZDY0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9JbnQxMjgu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEwNSw5ICsxMDYsMTEgQEAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdGVtcG9yYWxGcmFjdGlvbmFsU2Vjb25kRGlnaXRzKEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QKIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zKTsKIFJvdW5kaW5nTW9kZSB0ZW1wb3JhbFJvdW5k
aW5nTW9kZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUm91bmRpbmdNb2RlKTsKIHZvaWQg
Zm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBmcmFj
dGlvbiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPik7Cit2b2lkIGZvcm1hdFNlY29u
ZHNTdHJpbmdQYXJ0KFN0cmluZ0J1aWxkZXImLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIGZy
YWN0aW9uLCBQcmVjaXNpb25EYXRhKTsKIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91
bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJvdW5kaW5nSW5j
cmVtZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBkaXZpZGVuZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5kTnVtYmVyVG9J
bmNyZW1lbnQoZG91YmxlLCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUpOworSW50MTI4
IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoSW50MTI4LCBJbnQxMjggaW5jcmVtZW50LCBSb3VuZGlu
Z01vZGUpOwogCiBlbnVtIGNsYXNzIFRlbXBvcmFsT3ZlcmZsb3cgOiBib29sIHsKICAgICBDb25z
dHJhaW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMmZhYzczNDM1NDg5
ZWI3MGQ0ZDk2ZThkMjliMzRiZDNiNjhkYjhjZi4uOWNmNWZlYTAxOTg0OWRiNmU2NjA5MTBiYjk0
NTFjZDI3YzI1ZmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY3
LDYgKzE2Nyw3IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJU
ZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKQEAg
LTE1OTcsNiArMTU5OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2Us
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFs
Q2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxDYWxlbmRhcikK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsSW5zdGFudCkKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4
QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiZGY0MzFlODRlZjA5NDg1
NmJjMDI3MzBjNDBmZmU2ZWRhYTVjMWQ2Li42ZmU0Njc0MDViYmI0NzRlYzIyM2Q2OWI0ODFiMThk
NmYwYWQzZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE4Nyw2ICsxODcs
NyBAQCBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKIGNsYXNzIFN5bWJvbDsKIGNsYXNzIFRlbXBvcmFs
RHVyYXRpb247CitjbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFycmF5Q29udHJv
bGxlcjsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJs
b2NrOwpAQCAtNjAxLDYgKzYwMiw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxJbnN0YW50
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBs
YWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVt
cG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodWludDhBcnJheVNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZWZh
YjRhZDNiYzlmNzBkNjdlYjYyM2QwNzMxNjEwOTI5OThkM2UzNC4uOWMxYTVmYzc0MjQxODVkZDI5
N2EwMWJlZGJmY2EwMmNiZWYxOTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBA
IC0yOTEsMTIgKzI5MSwxOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMs
IHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJO
X1VOVVNFRF9SRVRVUk4KICAgICB7CiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0gICAg
ICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3co
bGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVz
dWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorI2lmICFIQVZFKElOVDEy
OF9UKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRf
dCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAg
ICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVy
ZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAh
SEFWRShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKHNp
Z25zTWF0Y2gobGhzLCByaHMpKSB7CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAg
ICAgICAgICAgICBpZiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC0g
cmhzKSA8IGxocykKQEAgLTMwOSwxOCArMzE1LDIzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMs
IHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVy
CiAgICAgICAgIH0gLy8gaWYgdGhlIHNpZ25zIGRvIG5vdCBtYXRjaCB0aGlzIG9wZXJhdGlvbiBj
YW4ndCBvdmVyZmxvdwogICAgICAgICByZXN1bHQgPSBsaHMgKyByaHM7CiAgICAgICAgIHJldHVy
biB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIHN1YihMSFMg
bGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAg
IHsKICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1w
OwotICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNv
bnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8
PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVt
cDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVt
cCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0g
dGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAg
ICAgICB9CisjZW5kaWYKKyNlbmRpZgogICAgICAgICBpZiAoIXNpZ25zTWF0Y2gobGhzLCByaHMp
KSB7CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAobGhz
ID4gc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgKyByaHMpCkBAIC0zMzIs
MTggKzM0MywyNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVu
YW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9IC8vIGlmIHRo
ZSBzaWducyBtYXRjaCB0aGlzIG9wZXJhdGlvbiBjYW4ndCBvdmVyZmxvdwogICAgICAgICByZXN1
bHQgPSBsaHMgLSByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5
cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVTRShNVUxfT1ZFUkZM
T1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxf
b3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorICAgICAg
ICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gaWYgdGhlIGludDEyOCB0eXBlIGlzIFdURjo6W1Vd
SW50MTI4SW1wbC4KKyAgICAgICAgLy8gQWxzbyBkb24ndCB1c2UgdGhlIGJ1aWx0aW4gZm9yIF9f
W3VdaW50MTI4X3Qgb24gQ2xhbmcvTGludXguCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
bGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisjaWYgIUhBVkUoSU5UMTI4X1QpIHx8IChD
T01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVv
ZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2
NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAg
ICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5H
KSAmJiBPUyhMSU5VWCkpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAgICAgICAgIGlmIChz
aWduc01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGxocyAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6
bWF4KCkgLyBsaHMpIDwgcmhzKQpAQCAtMzY1LDcgKzM4NCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0
aWNPcGVyCiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gbGhzICogcmhzOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBkaXZp
ZGUoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9SRVRV
Uk4KQEAgLTM4NSw0NyArNDAzLDY2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1l
IFJIUywgdHlwZW5hbWUgUmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgLy8g
TEhTIGFuZCBSSFMgYXJlIHVuc2lnbmVkIHR5cGVzIHNvIGJvdW5kcyBjaGVja3MgYXJlIG5pY2Ug
YW5kIGVhc3kKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgYWRkKExIUyBsaHMsIFJIUyByaHMsIFJl
c3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVS
KEdDQ19DT01QQVRJQkxFKQogICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChf
X2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
I2Vsc2UKLSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wID0gbGhzICsgcmhzOworI2lmIENPTVBJTEVS
KEdDQ19DT01QQVRJQkxFKQorI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICBpZiBjb25zdGV4
cHIgKHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6
ZW9mKHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBpZiAoX19idWlsdGluX2FkZF9v
dmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNp
ZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgdGVt
cCA9IGxocyArIHJoczsKICAgICAgICAgaWYgKHRlbXAgPCBsaHMpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVlOwot
I2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIHN1YihMSFMgbGhzLCBSSFMg
cmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKLSNpZiBD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOwotICAgICAg
ICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSNlbHNlCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcCA9IGxocyAtIHJoczsKKyNpZiBD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYg
Y29uc3RleHByIChzaXplb2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMp
IDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKF9fYnVpbHRp
bl9zdWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCisgICAg
ICAgIHRlbXAgPSBsaHMgLSByaHM7CiAgICAgICAgIGlmICh0ZW1wID4gbGhzKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSB0ZW1wOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShM
SFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgog
ICAgIHsKICNpZiBVU0UoTVVMX09WRVJGTE9XKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0g
ICAgICAgIGlmIChfX2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotI2Vsc2UKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBidWlsdGluIGlmIHRo
ZSBpbnQxMjggdHlwZSBpcyBXVEY6OkludDEyOEltcGwuCisgICAgICAgIC8vIEFsc28gZG9uJ3Qg
dXNlIHRoZSBidWlsdGluIGZvciBfX2ludDEyOF90IG9uIENsYW5nL0xpbnV4LgorICAgICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNAorI2lmICFI
QVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKSkKKyAgICAgICAg
aWYgY29uc3RleHByIChzaXplb2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihS
SFMpIDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUmVzdWx0VHlw
ZSB0ZW1wOworICAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cobGhzLCByaHMs
ICZ0ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1
bHQgPSB0ZW1wOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1Qp
IHx8IChDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICB9CisjZW5kaWYKKyNl
bmRpZgogICAgICAgICBpZiAoIWxocyB8fCAhcmhzKSB7CiAgICAgICAgICAgICByZXN1bHQgPSAw
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MzQsNyArNDcxLDYgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3Qg
QXJpdGhtZXRpY09wZXIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0
ID0gbGhzICogcmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBkaXZpZGUoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYg
cmVzdWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Rh
dGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCmluZGV4IGRlMGI0NWJkMGE4OGVh
YmE0NjZiNmU2YzBhZDY2ZGMwMmY1MjU3NDEuLjdiYjI3ZTk5NzZmYjE0ZTA2ZmE0ZWU0ODU1MzYx
N2ZjYTA2ZDhkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKKysrIGIv
U291cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtMzg4LDYgKzM4OCwxMSBAQCBpbmxpbmUgaW50
IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpCiAg
ICAgcmV0dXJuIGQgLSBzdGVwOwogfQogCitpbmxpbmUgZG91YmxlIHRpbWVUb01TKGRvdWJsZSBo
b3VyLCBkb3VibGUgbWluLCBkb3VibGUgc2VjLCBkb3VibGUgbXMpCit7CisgICAgcmV0dXJuICgo
KGhvdXIgKiBXVEY6Om1pbnV0ZXNQZXJIb3VyICsgbWluKSAqIFdURjo6c2Vjb25kc1Blck1pbnV0
ZSArIHNlYykgKiBXVEY6Om1zUGVyU2Vjb25kICsgbXMpOworfQorCiAvLyBSZXR1cm5zIGNvbWJp
bmVkIG9mZnNldCBpbiBtaWxsaXNlY29uZCAoVVRDICsgRFNUKS4KIFdURl9FWFBPUlRfUFJJVkFU
RSBMb2NhbFRpbWVPZmZzZXQgY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0KGRvdWJsZSB1dGNJbk1p
bGxpc2Vjb25kcywgVGltZVR5cGUgPSBVVENUaW1lKTsKIApAQCAtNDEwLDYgKzQxNSw3IEBAIHVz
aW5nIFdURjo6bXNUb0hvdXJzOwogdXNpbmcgV1RGOjpzZWNvbmRzUGVyRGF5OwogdXNpbmcgV1RG
OjpzZWNvbmRzUGVyTWludXRlOwogdXNpbmcgV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0
ZWRDaGFyYWN0ZXJzOwordXNpbmcgV1RGOjp0aW1lVG9NUzsKIHVzaW5nIFdURjo6bWFrZVJGQzI4
MjJEYXRlU3RyaW5nOwogdXNpbmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7CiB1c2luZyBXVEY6OmNh
bGN1bGF0ZUxvY2FsVGltZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDEy
OC5oIGIvU291cmNlL1dURi93dGYvSW50MTI4LmgKaW5kZXggNDM1N2Y0NzlhMWMxNWY0MmJhZTY5
NWI5Y2U3Y2M5MjU4OTJkNTFhYS4uMWFmZGM5Y2UxNmUyOWFiZjZiNjFlYzM1OWY1MmE3ZTVmODNk
YTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTI4LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvSW50MTI4LmgKQEAgLTQ4LDEzICs0OCw5IEBACiAvLyBidWlsdGluIHR5cGUuICBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSBub3QgdG8gZGVmaW5lIG9wZXJhdG9yIHdjaGFyX3QoKQogLy8gYWxv
bmdzaWRlIG9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCkgaW4gdGhlc2UgaW5zdGFuY2VzLgogI2Rl
ZmluZSBBQlNMX0lOVEVSTkFMX1dDSEFSX1QgX193Y2hhcl90Ci0jaWYgQ1BVKFg4Nl82NCkKLSNp
bmNsdWRlIDxpbnRyaW4uaD4KLSNwcmFnbWEgaW50cmluc2ljKF91bXVsMTI4KQotI2VuZGlmICAv
LyBkZWZpbmVkKF9NX1g2NCkKLSNlbHNlICAgLy8gZGVmaW5lZChfTVNDX1ZFUikKKyNlbHNlCiAj
ZGVmaW5lIEFCU0xfSU5URVJOQUxfV0NIQVJfVCB3Y2hhcl90Ci0jZW5kaWYgIC8vIGRlZmluZWQo
X01TQ19WRVIpCisjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTUxNSw3ICs1MTEsNyBA
QCBjb25zdGV4cHIgVUludDEyOEltcGwgb3BlcmF0b3I8PChVSW50MTI4SW1wbCBsaHMsIGludCBh
bW91bnQpOwogY29uc3RleHByIFVJbnQxMjhJbXBsIG9wZXJhdG9yPj4oVUludDEyOEltcGwgbGhz
LCBpbnQgYW1vdW50KTsKIGNvbnN0ZXhwciBVSW50MTI4SW1wbCBvcGVyYXRvcisoVUludDEyOElt
cGwgbGhzLCBVSW50MTI4SW1wbCByaHMpOwogY29uc3RleHByIFVJbnQxMjhJbXBsIG9wZXJhdG9y
LShVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocyk7Ci1VSW50MTI4SW1wbCBvcGVyYXRv
ciooVUludDEyOEltcGwgbGhzLCBVSW50MTI4SW1wbCByaHMpOworY29uc3RleHByIFVJbnQxMjhJ
bXBsIG9wZXJhdG9yKihVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocyk7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgVUludDEyOEltcGwgb3BlcmF0b3IvKFVJbnQxMjhJbXBsIGxocywgVUludDEy
OEltcGwgcmhzKTsKIFdURl9FWFBPUlRfUFJJVkFURSBVSW50MTI4SW1wbCBvcGVyYXRvciUoVUlu
dDEyOEltcGwgbGhzLCBVSW50MTI4SW1wbCByaHMpOwogCkBAIC04MTIsMTQgKzgwOCw3IEBAIGNv
bnN0ZXhwciBVSW50MTI4SW1wbCBvcGVyYXRvci0oVUludDEyOEltcGwgbGhzLCBVSW50MTI4SW1w
bCByaHMpIHsKICAgICAgIGxocywgcmhzKTsKIH0KIAotaW5saW5lIFVJbnQxMjhJbXBsIG9wZXJh
dG9yKihVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocykgewotI2lmIENPTVBJTEVSKE1T
VkMpICYmIENQVShYODZfNjQpCi0gIHVpbnQ2NF90IGNhcnJ5OwotICB1aW50NjRfdCBsb3cgPSBf
dW11bDEyOChVSW50MTI4TG93NjQobGhzKSwgVUludDEyOExvdzY0KHJocyksICZjYXJyeSk7Ci0g
IHJldHVybiBNYWtlVUludDEyOChVSW50MTI4TG93NjQobGhzKSAqIFVJbnQxMjhIaWdoNjQocmhz
KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgVUludDEyOEhpZ2g2NChsaHMpICogVUludDEy
OExvdzY0KHJocykgKyBjYXJyeSwKLSAgICAgICAgICAgICAgICAgICAgIGxvdyk7Ci0jZWxzZQor
Y29uc3RleHByIFVJbnQxMjhJbXBsIG9wZXJhdG9yKihVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJ
bXBsIHJocykgewogICB1aW50NjRfdCBhMzIgPSBVSW50MTI4TG93NjQobGhzKSA+PiAzMjsKICAg
dWludDY0X3QgYTAwID0gVUludDEyOExvdzY0KGxocykgJiAweGZmZmZmZmZmOwogICB1aW50NjRf
dCBiMzIgPSBVSW50MTI4TG93NjQocmhzKSA+PiAzMjsKQEAgLTgyOCwxMCArODE3LDkgQEAgaW5s
aW5lIFVJbnQxMjhJbXBsIG9wZXJhdG9yKihVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJo
cykgewogICAgICAgTWFrZVVJbnQxMjgoVUludDEyOEhpZ2g2NChsaHMpICogVUludDEyOExvdzY0
KHJocykgKwogICAgICAgICAgICAgICAgICAgICAgIFVJbnQxMjhMb3c2NChsaHMpICogVUludDEy
OEhpZ2g2NChyaHMpICsgYTMyICogYjMyLAogICAgICAgICAgICAgICAgICAgYTAwICogYjAwKTsK
LSAgcmVzdWx0ICs9IFVJbnQxMjhJbXBsKGEzMiAqIGIwMCkgPDwgMzI7Ci0gIHJlc3VsdCArPSBV
SW50MTI4SW1wbChhMDAgKiBiMzIpIDw8IDMyOwotICByZXR1cm4gcmVzdWx0OwotI2VuZGlmCisg
IFVJbnQxMjhJbXBsIHYxID0gVUludDEyOEltcGwoYTMyICogYjAwKSA8PCAzMjsKKyAgVUludDEy
OEltcGwgdjIgPSBVSW50MTI4SW1wbChhMDAgKiBiMzIpIDw8IDMyOworICByZXR1cm4gcmVzdWx0
ICsgdjEgKyB2MjsKIH0KIAogLy8gSW5jcmVtZW50L2RlY3JlbWVudCBvcGVyYXRvcnMuCkBAIC04
OTQsNyArODgyLDcgQEAgaW5saW5lIEludDEyOEltcGwmIEludDEyOEltcGw6Om9wZXJhdG9yPSh1
bnNpZ25lZCBsb25nIGxvbmcgdikgewogY29uc3RleHByIEludDEyOEltcGwgb3BlcmF0b3ItKElu
dDEyOEltcGwgdik7CiBjb25zdGV4cHIgSW50MTI4SW1wbCBvcGVyYXRvcisoSW50MTI4SW1wbCBs
aHMsIEludDEyOEltcGwgcmhzKTsKIGNvbnN0ZXhwciBJbnQxMjhJbXBsIG9wZXJhdG9yLShJbnQx
MjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpOwotSW50MTI4SW1wbCBvcGVyYXRvciooSW50MTI4
SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKTsKK2NvbnN0ZXhwciBJbnQxMjhJbXBsIG9wZXJhdG9y
KihJbnQxMjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpOwogV1RGX0VYUE9SVF9QUklWQVRFIElu
dDEyOEltcGwgb3BlcmF0b3IvKEludDEyOEltcGwgbGhzLCBJbnQxMjhJbXBsIHJocyk7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgSW50MTI4SW1wbCBvcGVyYXRvciUoSW50MTI4SW1wbCBsaHMsIEludDEy
OEltcGwgcmhzKTsKIGNvbnN0ZXhwciBJbnQxMjhJbXBsIG9wZXJhdG9yfChJbnQxMjhJbXBsIGxo
cywgSW50MTI4SW1wbCByaHMpOwpAQCAtMTE5Miw3ICsxMTgwLDcgQEAgY29uc3RleHByIEludDEy
OEltcGwgb3BlcmF0b3ItKEludDEyOEltcGwgbGhzLCBJbnQxMjhJbXBsIHJocykgewogICAgICAg
bGhzLCByaHMpOwogfQogCi1pbmxpbmUgSW50MTI4SW1wbCBvcGVyYXRvciooSW50MTI4SW1wbCBs
aHMsIEludDEyOEltcGwgcmhzKSB7Citjb25zdGV4cHIgSW50MTI4SW1wbCBvcGVyYXRvciooSW50
MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7CiAgIHJldHVybiBNYWtlSW50MTI4KAogICAg
ICAgaW50MTI4X2ludGVybmFsOjpCaXRDYXN0VG9TaWduZWQoVUludDEyOEhpZ2g2NChVSW50MTI4
SW1wbChsaHMpICogcmhzKSksCiAgICAgICBVSW50MTI4TG93NjQoVUludDEyOEltcGwobGhzKSAq
IHJocykpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA3ZDE2M2Y2YzYzNGZiNWQ2MDA2NTE3OTQ2YmVhMjAzMGY5NjBkMWRiLi4xOWJkNDE2
NjY0Mjc0YTZlMzcwMTQwYzJlYWY0ZDllMDkwYTJjNjhmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEw
LTI1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KKworICAgICAgICBb
SlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RCZSk6CisgICAgICAg
IChzaG91bGRUaHJvdyk6CisgICAgICAgIChpbnN0YW50cy5mb3JFYWNoKToKKyAgICAgICAgKHNo
b3VsZFRocm93Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKGNvbnN0Lm1heFZhbHVl
Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKHNob3VsZEJlLmVwb2NoLnN1YnRyYWN0
KToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOiBObyBuZWVkIHRvIGlnbm9yZSBhbGwg
VGVtcG9yYWwuSW5zdGFudCB0ZXN0cworICAgICAgICAgIGFueW1vcmUsIG9ubHkgdGhlIG9uZXMg
Zm9yIHRoZSB1bmltcGxlbWVudGVkIG1ldGhvZHMuCisKIDIwMjEtMTAtMjQgIEFsZXhleSBTaHZh
eWthICA8YXNodmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKCkgc2hvdWxkIHVzZSBwcm90b3R5cGUncyBnbG9iYWwgb2Jq
ZWN0CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGI3YTViNmNhMDU5
MzRhNjQ1N2Q2ZjU2ZDlkNWM1YjU0MWUyYTgyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qcwpAQCAtMCwwICsxLDQwNyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkTm90QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
PT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGEgdmFsdWUg
dG8gYmUgZGlmZmVyZW50IGZyb20gJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAg
aWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZy5jYWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAgICAg
ICAgICAgaWYgKCFtZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2ggJHtt
ZXNzYWdlfSFgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKFN0cmlu
ZyhlcnJvciksIG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBlcG9jaAorewor
ICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgwbiks
CisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygwKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3MC0wMS0wMVQwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZv
ckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29u
ZHMsIDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAwKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMG4pOworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC50b1N0cmluZygpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAg
fSk7Cit9CisKKy8vIHBvc2l0aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMg
PSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0YW50KDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8w
MDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDFfMDAwXzAw
MF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygx
XzAwMF8wMDBfMDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlj
cm9zZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAg
ICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpLAorICAg
IF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoU2Vjb25kcywgMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAw
bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAw
XzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCks
ICcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNP
TigpLCAnMjAwMS0wOS0wOVQwMTo0Njo0MFonKTsKKyAgICB9KTsKK30KKworLy8gbmVnYXRpdmUg
ZXBvY2ggdmFsdWUKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBv
cmFsLkluc3RhbnQoLTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9y
YWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKC0xXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTFfMDAwXzAw
MF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTkzOC0wNC0yNFQyMjoxMzoyMFonKSwKKyAgICBdOworICAgIGluc3RhbnRz
LmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNl
Y29uZHMsIC0xXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1p
bGxpc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pY3Jvc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBz
aG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBf
MDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5MzgtMDQtMjRU
MjI6MTM6MjBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTM4LTA0
LTI0VDIyOjEzOjIwWicpOworICAgIH0pOworfQorCisvLyBtYXhpbnQ2NCBlcG9jaCB2YWx1ZQor
eworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg5
MjIzMzcyMDM2ODU0Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2No
TmFub3NlY29uZHMoOTIyMzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpLAorICAgIF07CisgICAg
aW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoU2Vjb25kcywgOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWxsaXNlY29uZHMsIDkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTWljcm9zZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3
NTgwN1onKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIyNjItMDQtMTFU
MjM6NDc6MTYuODU0Nzc1ODA3WicpOworICAgIH0pOworfQorCisvLyBtaW5pbnQ2NCBlcG9jaCB2
YWx1ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5z
dGFudCgtOTIyMzM3MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaE5hbm9zZWNvbmRzKC05MjIzMzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyksCisgICAg
XTsKKyAgICBpbnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hTZWNvbmRzLCAtOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIC05MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAg
ICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NTgw
OG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxNjc3LTA5LTIxVDAw
OjEyOjQzLjE0NTIyNDE5MlonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwg
JzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicpOworICAgIH0pOworfQorCisvLyBtYXgg
SW5zdGFudCByYW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVt
cG9yYWwuSW5zdGFudCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDg2NDAwXzAwMDBfMDAwMCksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8w
MDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcyg4NjQw
MF8wMDAwXzAwMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9j
aE5hbm9zZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb20oJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyksCisgICAgXTsKKyAg
ICBpbnN0YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3Rh
bnQuZXBvY2hTZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWlsbGlzZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBu
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCA4NjQwMF8wMDAw
XzAwMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygp
LCAnKzI3NTc2MC0wOS0xM1QwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50
b0pTT04oKSwgJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1p
biBJbnN0YW50IHJhbmdlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBU
ZW1wb3JhbC5JbnN0YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKC04NjQwMF8wMDAwXzAwMDApLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtODY0MDBfMDAwMF8w
MDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRz
KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b21FcG9jaE5hbm9zZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tKCctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpLAorICAg
IF07CisgICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LmVwb2NoU2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAw
MF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywg
LTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LnRvU3RyaW5nKCksICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRC
ZShpbnN0YW50LnRvSlNPTigpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICB9KTsK
K30KKworLy8gdG9vIGxhcmdlCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFu
dCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJvciwgL1xiODY0MDAwMDAw
MDAwMDAwMDAwMDAwMVxiLyk7CisvLyB0b28gc21hbGwKK3Nob3VsZFRocm93KCgpID0+IG5ldyBU
ZW1wb3JhbC5JbnN0YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuKSwgUmFuZ2VFcnJv
ciwgLy04NjQwMDAwMDAwMDAwMDAwMDAwMDAxXGIvKTsKKy8vIGxhcmdlciB0aGFuIG1heGludDEy
OAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoMW4gPDwgMTI5biksIFJh
bmdlRXJyb3IsIC9cYjY4MDU2NDczMzg0MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiLyk7
CisvLyBzbWFsbGVyIHRoYW4gbWluaW50MTI4CitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9y
YWwuSW5zdGFudCgtMW4gPDwgMTI5biksIFJhbmdlRXJyb3IsIC8tNjgwNTY0NzMzODQxODc2OTI2
OTI2NzQ5MjE0ODYzNTM2NDIyOTEyXGIvKTsKKy8vIGRvZXMgbm90IGNyYXNoIHdoZW4gYmlnaW50
IGxvbmdlciB0aGFuIG1heGludDMyIGRpZ2l0cworc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBv
cmFsLkluc3RhbnQoQmlnSW50KCc5Jy5yZXBlYXQoMjE0NzQ4MzY0NykpKSwgUmFuZ2VFcnJvcik7
CisvLyBjb25zdHJ1Y3RzIGZyb20gc3RyaW5nCitzaG91bGRCZShuZXcgVGVtcG9yYWwuSW5zdGFu
dCgnMCcpLmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKy8vIHRocm93cyBvbiBudW1iZXIKK3Nob3Vs
ZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDApLCBUeXBlRXJyb3IpOworLy8gdGhy
b3dzIG9uIHN0cmluZyB0aGF0IGRvZXMgbm90IGNvbnZlcnQgdG8gQmlnSW50CitzaG91bGRUaHJv
dygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgnYWJjMTIzJyksIFN5bnRheEVycm9yKTsKKwor
Ly8gSW5zdGFudC5mcm9tKGluc3RhbnQpIGlzIG5vdCB0aGUgc2FtZSBvYmplY3QKK3sKKyAgICBj
b25zdCBpbnN0ID0gVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDIwLTAyLTEyVDExOjQyKzAxOjAw
W0V1cm9wZS9BbXN0ZXJkYW1dJyk7CisgICAgc2hvdWxkTm90QmUoVGVtcG9yYWwuSW5zdGFudC5m
cm9tKGluc3QpLCBpbnN0KTsKK30KKworLy8gdG9TdHJpbmcKKworeworICAgIGNvbnN0IGkxID0g
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzWicpOworICAgIGNvbnN0IGky
ID0gVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwWicpOworICAgIGNv
bnN0IGkzID0gVGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRa
Jyk7CisKKyAgICAvLyBkZWZhdWx0IGlzIHRvIGVtaXQgc2Vjb25kcyBhbmQgZHJvcCB0cmFpbGlu
ZyB6ZXJvcyBhZnRlciB0aGUgZGVjaW1hbCcKKyAgICBzaG91bGRCZShpMS50b1N0cmluZygpLCAn
MTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKyAgICBzaG91bGRCZShpMi50b1N0cmluZygpLCAnMTk3
Ni0xMS0xOFQxNToyMzozMFonKTsKKyAgICBzaG91bGRCZShpMy50b1N0cmluZygpLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xMjM0WicpOworCisgICAgLy8gdHJ1bmNhdGVzIHRvIG1pbnV0ZQorICAg
IFtpMSwgaTIsIGkzXS5mb3JFYWNoKChpKSA9PiBzaG91bGRCZShpLnRvU3RyaW5nKHsgc21hbGxl
c3RVbml0OiAnbWludXRlJyB9KSwgJzE5NzYtMTEtMThUMTU6MjNaJykpOworCisgICAgLy8gb3Ro
ZXIgc21hbGxlc3RVbml0cyBhcmUgYWxpYXNlcyBmb3IgZnJhY3Rpb25hbCBkaWdpdHMKKyAgICBz
aG91bGRCZShpMy50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ3NlY29uZCcgfSksIGkzLnRvU3Ry
aW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMCB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9T
dHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaWxsaXNlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJh
Y3Rpb25hbFNlY29uZERpZ2l0czogMyB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBz
bWFsbGVzdFVuaXQ6ICdtaWNyb3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogNiB9KSk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVu
aXQ6ICduYW5vc2Vjb25kJyB9KSwgaTMudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiA5IH0pKTsKKworICAgIC8vIHRydW5jYXRlIG9yIHBhZCB0byAyIHBsYWNlcworICAgIHsKKyAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMiB9OworICAg
ICAgICBzaG91bGRCZShpMS50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MDAu
MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4wMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyks
ICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworICAgIH0KKyAgICAvLyBwYWQgdG8gNyBwbGFj
ZXMKKyAgICB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdp
dHM6IDcgfTsKKyAgICAgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTEx
LTE4VDE1OjIzOjAwLjAwMDAwMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKG9w
dGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRC
ZShpMy50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDAwMFonKTsK
KyAgICB9CisKKyAgICAvLyByb3VuZCB0byBuZWFyZXN0CisgICAgc2hvdWxkQmUoaTIudG9TdHJp
bmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9
KSwgJzE5NzYtMTEtMThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFj
dGlvbmFsU2Vjb25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzE5
NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpOworICAgIC8vIHJvdW5kIHVwCisgICAgc2hvdWxkQmUo
aTIudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdjZWls
JyB9KSwgJzE5NzYtMTEtMThUMTU6MjRaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBm
cmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSwgJzE5NzYt
MTEtMThUMTU6MjM6MzAuMTI0WicpOworICAgIC8vIHJvdW5kIGRvd24KKyAgICBbJ2Zsb29yJywg
J3RydW5jJ10uZm9yRWFjaCgocm91bmRpbmdNb2RlKSA9PiB7CisgICAgICAgIHNob3VsZEJlKGky
LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlIH0pLCAnMTk3
Ni0xMS0xOFQxNToyM1onKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBmcmFjdGlv
bmFsU2Vjb25kRGlnaXRzOiAzLCByb3VuZGluZ01vZGUgfSksICcxOTc2LTExLTE4VDE1OjIzOjMw
LjEyM1onKTsKKyAgICB9KTsKKworICAgIHsKKyAgICAgICAgLy8gcm91bmRpbmcgZG93biBpcyB0
b3dhcmRzIHRoZSBCaWcgQmFuZywgbm90IHRvd2FyZHMgMSBCQ0UKKyAgICAgICAgY29uc3QgaTQg
PSBUZW1wb3JhbC5JbnN0YW50LmZyb20oJy0wMDAwOTktMTItMTVUMTI6MDA6MDAuNVonKTsKKyAg
ICAgICAgc2hvdWxkQmUoaTQudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnLCByb3Vu
ZGluZ01vZGU6ICdmbG9vcicgfSksICctMDAwMDk5LTEyLTE1VDEyOjAwOjAwWicpOworCisgICAg
ICAgIC8vIHJvdW5kaW5nIGNhbiBhZmZlY3QgYWxsIHVuaXRzCisgICAgICAgIGNvbnN0IGk1ID0g
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTk5OVonKTsK
KyAgICAgICAgc2hvdWxkQmUoaTUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA4
LCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgJzIwMDAtMDEtMDFUMDA6MDA6MDAuMDAw
MDAwMDBaJyk7CisgICAgfQorfQorCisvLyBsZWFwIHNlY29uZCBpcyBjb25zdHJhaW5lZAorc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcyMDE2LTEyLTMxVDIzOjU5OjYwWicpfWAs
ICcyMDE2LTEyLTMxVDIzOjU5OjU5WicpOworLy8gdmFyaWFudCB0aW1lIHNlcGFyYXRvcnMKK3No
b3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOCAxNToyM1onKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzowMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOHQxNToyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIHZh
cmlhbnQgVVRDIGRlc2lnbmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3Ni0xMS0xOFQxNToyM3onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzowMFonKTsKKy8vIGFueSBu
dW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTJaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzWicpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyM1onKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzRaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTIzNDVaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDVaJyk7CitzaG91bGRCZShgJHtU
ZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2WicpfWAsICcx
OTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3WicpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyMzQ1NjdaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2NzhaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
NDU2NzhaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzNDU2Nzg5WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVon
KTsKKy8vIHZhcmlhbnQgZGVjaW1hbCBzZXBhcmF0b3IKK3Nob3VsZEJlKGAke1RlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMCwxMlonKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMlonKTsKKy8vIHZhcmlhbnQgbWludXMgc2lnbgorc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyXHUyMjEyMDI6MDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNzoyMzozMC4xMlonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnXHUyMjEyMDA5OTk5LTExLTE4VDE1OjIzOjMwLjEyWicpfWAsICctMDA5OTk5LTExLTE4VDE1
OjIzOjMwLjEyWicpOworLy8gbWl4dHVyZSBvZiBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYxMTE4VDE1OjIzOjMwLjErMDA6
MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0x
MS0xOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1MjMzMC4xKzAwMDAn
KX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQx
NTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1OjIzOjMwLjErMDA6MDAnKX1g
LCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1MjMzMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0x
MS0xOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2LTExLTE4VDE1MjMzMC4xKzAw
MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwMDAnKX1gLCAnMTk3Ni0xMS0x
OFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAx
OTc2MTExOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7Citz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYxMTE4VDE1MjMzMC4xKzAw
MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworLy8gb3B0aW9uYWwgcGFydHMKK3No
b3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMCswMCcp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjMwWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFu
dC5mcm9tKCcxOTc2LTExLTE4VDE1WicpfWAsICcxOTc2LTExLTE4VDE1OjAwOjAwWicpOworLy8g
aWdub3JlcyBhbnkgc3BlY2lmaWVkIGNhbGVuZGFyCisvLyBGSVhNRTogcGFyc2UgY2FsZW5kYXIK
Ky8vIHNob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjM0NTY3ODlaW3UtY2E9ZGlzY29yZF0nKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0
NTY3ODlaJyk7CisvLyBubyBqdW5rIGF0IGVuZCBvZiBzdHJpbmcKK3Nob3VsZFRocm93KCgpID0+
IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaanVu
aycpLCBSYW5nZUVycm9yKTsKKworLy8gRm9yIGNvbnZlbmllbmNlIGluIHNldmVyYWwgdGVzdHMK
K2NvbnN0IGVwb2NoID0gbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pOworY29uc3QgbWluVmFsdWUg
PSBuZXcgVGVtcG9yYWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbik7Citj
b25zdCBtYXhWYWx1ZSA9IG5ldyBUZW1wb3JhbC5JbnN0YW50KDg2NDAwXzAwMDBfMDAwMF8wMDBf
MDAwXzAwMG4pOworCisvLyBhZGQoKQorCit7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgaG91
cnM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMzYwMF8wMDBfMDAwXzAwMG4pOworICAgIHNob3Vs
ZEJlKGVwb2NoLmFkZCh7IGhvdXJzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMzYwMF8wMDBf
MDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IG1pbnV0ZXM6IDEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBt
aW51dGVzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBz
aG91bGRCZShlcG9jaC5hZGQoeyBzZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAw
XzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBzZWNvbmRzOiAtMSB9KS5lcG9j
aE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7
IG1pbGxpc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBuKTsKKyAgICBz
aG91bGRCZShlcG9jaC5hZGQoeyBtaWxsaXNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMs
IC0xXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWNyb3NlY29uZHM6IDEg
fSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBt
aWNyb3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMG4pOworICAgIHNob3Vs
ZEJlKGVwb2NoLmFkZCh7IG5hbm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFuKTsK
KyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vj
b25kcywgLTFuKTsKK30KKworeworICAgIC8vIG1heCBkdXJhdGlvbiB0aGF0IGNhbiBiZSBhZGRl
ZCB0byBhbnkgSW5zdGFudAorICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IGhvdXJzOiA0OF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgaG91cnM6IC00OF8wMDAwXzAwMDAgfSkuZXBv
Y2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUo
bWluVmFsdWUuYWRkKHsgbWludXRlczogMjg4MF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25k
cywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRk
KHsgbWludXRlczogLTI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IHNlY29uZHM6
IDE3MjgwMF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5v
c2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgc2Vjb25kczogLTE3MjgwMF8w
MDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgLy8gbm90ZSwgdW5zYWZlIGludGVnZXJzIGZyb20gaGVyZSBvbjsgdGhlIG11bHRpcGxp
Y2F0aW9uIHRvIGNvbnZlcnQKKyAgICAvLyBtaWxsaXNlY29uZHMgYW5kIG1pY3Jvc2Vjb25kcyB0
byBuYW5vc2Vjb25kcyBzaG91bGQgdGFrZSBwbGFjZSBpbiB0aGUKKyAgICAvLyBiaWdpbnQgZG9t
YWluLgorICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pbGxpc2Vjb25kczogMTcyODAwXzAw
MDBfMDAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25k
cyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWlsbGlzZWNvbmRzOiAtMTcyODAwXzAw
MDBfMDAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25k
cyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuYWRkKHsgbWljcm9zZWNvbmRzOiAxNzI4MDBfMDAw
MF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vj
b25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuYWRkKHsgbWljcm9zZWNvbmRzOiAtMTcyODAw
XzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFu
b3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG5hbm9zZWNvbmRzOiAxNzI4
MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVw
b2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG5hbm9zZWNvbmRz
OiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5W
YWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5nIDY0IGJp
dHMKKyAgICBjb25zdCBleHA2NCA9IDIgKiogNjQ7CisgICAgWydob3VycycsICdtaW51dGVzJywg
J3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25kcyddLmZvckVhY2goKHVuaXQp
ID0+IHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiBleHA2
NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7
IFt1bml0XTogLWV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICB9KTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBuYW5vc2Vjb25kczogZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywgMTg0NDY3
NDQwNzM3MDk1NTE2MTZuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vjb25kczog
LWV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNm4pOworfQor
Cit7CisgICAgLy8gb3ZlcmZsb3dpbmcgMTI4IGJpdHMKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMn
LCAnc2Vjb25kcycsICdtaWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJywgJ25hbm9zZWNvbmRz
J10uZm9yRWFjaCgodW5pdCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5h
ZGQoeyBbdW5pdF06IE51bWJlci5NQVhfVkFMVUUgfSksIFJhbmdlRXJyb3IpOworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IC1OdW1iZXIuTUFYX1ZBTFVFIH0p
LCBSYW5nZUVycm9yKTsKKyAgICB9KTsKK30KKworLy8gc3VidHJhY3QoKQorCit7CisgICAgc2hv
dWxkQmUoZXBvY2guc3VidHJhY3QoeyBob3VyczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMzYw
MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgaG91cnM6IC0x
IH0pLmVwb2NoTmFub3NlY29uZHMsIDM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTYwXzAwMF8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaW51dGVzOiAtMSB9KS5l
cG9jaE5hbm9zZWNvbmRzLCA2MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1
YnRyYWN0KHsgc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMG4p
OworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgc2Vjb25kczogLTEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgMV8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsg
bWlsbGlzZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBuKTsKKyAgICBz
aG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vj
b25kcywgMV8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaWNyb3Nl
Y29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBv
Y2guc3VidHJhY3QoeyBtaWNyb3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAw
bik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogMSB9KS5lcG9j
aE5hbm9zZWNvbmRzLCAtMW4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3Nl
Y29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFuKTsKK30KKworeworICAgIC8vIG1heCBk
dXJhdGlvbiB0aGF0IGNhbiBiZSBhZGRlZCB0byBhbnkgSW5zdGFudAorICAgIHNob3VsZEJlKG1h
eFZhbHVlLnN1YnRyYWN0KHsgaG91cnM6IDQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRz
LCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0
cmFjdCh7IGhvdXJzOiAtNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWlu
dXRlczogMjg4MF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hO
YW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaW51dGVzOiAt
Mjg4MF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vj
b25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJhY3QoeyBzZWNvbmRzOiAxNzI4MDBf
MDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgc2Vjb25kczogLTE3MjgwMF8wMDAw
XzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cisg
ICAgLy8gbm90ZSwgdW5zYWZlIGludGVnZXJzIGZyb20gaGVyZSBvbjsgdGhlIG11bHRpcGxpY2F0
aW9uIHRvIGNvbnZlcnQKKyAgICAvLyBtaWxsaXNlY29uZHMgYW5kIG1pY3Jvc2Vjb25kcyB0byBu
YW5vc2Vjb25kcyBzaG91bGQgdGFrZSBwbGFjZSBpbiB0aGUKKyAgICAvLyBiaWdpbnQgZG9tYWlu
LgorICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWlsbGlzZWNvbmRzOiAxNzI4MDBf
MDAwMF8wMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogLTE3
MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFu
b3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRz
OiAxNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUu
ZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaWNy
b3NlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywg
bWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWF4VmFsdWUuc3VidHJh
Y3QoeyBuYW5vc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5h
bm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5W
YWx1ZS5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAw
MCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKK30KKwor
eworICAgIC8vIG92ZXJmbG93aW5nIDY0IGJpdHMKKyAgICBjb25zdCBleHA2NCA9IDIgKiogNjQ7
CisgICAgWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21p
Y3Jvc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IGV4cDY0IH0pLCBSYW5nZUVycm9yKTsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IC1leHA2NCB9KSwg
UmFuZ2VFcnJvcik7CisgICAgfSk7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5v
c2Vjb25kczogZXhwNjQgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTE4NDQ2NzQ0MDczNzA5NTUxNjE2
bik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBuYW5vc2Vjb25kczogLWV4cDY0IH0p
LmVwb2NoTmFub3NlY29uZHMsIDE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7Cit9CisKK3sKKyAgICAv
LyBvdmVyZmxvd2luZyAxMjggYml0cworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRz
JywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3NlY29uZHMnLCAnbmFub3NlY29uZHMnXS5mb3JFYWNo
KCh1bml0KSA9PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsg
W3VuaXRdOiBOdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gZXBvY2guc3VidHJhY3QoeyBbdW5pdF06IC1OdW1iZXIuTUFYX1ZBTFVFIH0p
LCBSYW5nZUVycm9yKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA5NjJkNTI0NjI1
MjVhZmJiMjk2ZDlhY2ZkNmQ4YTBhMTQ0ZjIwYjM0Li5hZWQ2MzRiMThmY2E2ZmE5MDk2NGM4ZTkx
MmM3YWI2MzJmM2IzMWU3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yMyw3ICsyMyw4IEBAIHNraXA6
CiAgICAgLSBjYWxsYWJsZS1ib3VuZGFyeS1yZWFsbXMKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
SW5zdGFudAorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUv
dG9ab25lZERhdGVUaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3By
b3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L05vdwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlCiAgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0zNCw3ICszNSw4IEBAIHNraXA6
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvWm9uZWREYXRlVGltZQogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFs
L0NhbGVuZGFyCi0gICAgLSB0ZXN0L2ludGw0MDIvVGVtcG9yYWwvSW5zdGFudAorICAgIC0gdGVz
dC9pbnRsNDAyL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAg
IC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGlt
ZUlTTwogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL05vdwogICAgIC0gdGVzdC9pbnRsNDAy
L1RlbXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL1BsYWluRGF0
ZVRpbWUKQEAgLTI0Nyw2ICsyNDksNyBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvU3RyaW5nL3NtYWxsZXN0dW5pdC1wbHVyYWxzLWFj
Y2VwdGVkLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5
cGUvdG90YWwvY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvdW5pdC1wbHVyYWxzLWFjY2VwdGVk
LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0
cmluZy9zbWFsbGVzdHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBhcmUvY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0Lmpz
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvZnJvbS9jYWxlbmRhci10
ZW1wb3JhbC1vYmplY3QuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGlt
ZS9wcm90b3R5cGUvZXF1YWxzL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwpAQCAtMjcyLDYg
KzI3NSwxMyBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24v
cHJvdG90eXBlL3N1YnRyYWN0L29yZGVyLW9mLW9wZXJhdGlvbnMuanMKICAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9kYXRldW50aWwtZmllbGQu
anMKIAorICAgICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5UaW1lWm9uZQorICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zm
c2V0bmFub3NlY29uZHNmb3Itbm9uLWludGVnZXIuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9z
ZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
SW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNm
b3Itd3JvbmctdHlwZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9w
cm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUtc3RyaW5nLWRhdGV0aW1lLmpzCisgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS5q
cworCiAgICAgIyBEZXBlbmRzIG9uIFRlbXBvcmFsLlpvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3Qv
YnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL2NvbXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0
aW1lLW5lZ2F0aXZlLWVwb2NobmFub3NlY29uZHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0R1cmF0aW9uL2NvbXBhcmUvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25l
LWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCkBAIC0yOTksNiArMzA5LDEx
IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5
cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9z
ZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9E
dXJhdGlvbi9wcm90b3R5cGUvdG90YWwvcmVsYXRpdmV0by16b25lZGRhdGV0aW1lLXRpbWV6b25l
LWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcwogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRk
YXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci13cm9uZy10eXBlLmpzCisg
ICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L2NvbXBhcmUvYXJndW1lbnQtem9u
ZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9mcm9t
L2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0luc3RhbnQvcHJvdG90eXBlL2VxdWFscy9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9zaW5jZS9hcmd1bWVu
dC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50
L3Byb3RvdHlwZS91bnRpbC9hcmd1bWVudC16b25lZGRhdGV0aW1lLmpzCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1l
LW5lZ2F0aXZlLWVwb2NobmFub3NlY29uZHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL1BsYWluVGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0
b2Zmc2V0bmFub3NlY29uZHNmb3Itbm9uLWludGVnZXIuanMKICAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUtdGltZXpv
bmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itb3V0LW9mLXJhbmdlLmpzCkBAIC0zMzQsNSArMzQ5
LDYgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3Rv
dHlwZS9yb3VuZC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcwogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3JvdW5kL3JvdW5kLW5lZ2F0aXZlLXJlc3Vs
dC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3N1
YnRyYWN0L2JhbGFuY2UtbmVnYXRpdmUtcmVzdWx0LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS91bnRpbC9pbnN0YW50LXN0cmluZy5qcwogICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS9zaW5jZS9iYWxhbmNl
LW5lZ2F0aXZlLXRpbWUtdW5pdHMuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1Bs
YWluVGltZS9wcm90b3R5cGUvdW50aWwvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442445</attachid>
            <date>2021-10-25 18:41:18 -0700</date>
            <delta_ts>2021-10-26 09:21:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211025184117.patch</filename>
            <type>text/plain</type>
            <size>139130</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NmE4ZWM2ZDQ0NWQ0MzU1YTQ5YzY0ZmE3Y2MwOTM2OGU1MTg4OTJmLi4wZTQ2Y2Y2MDY0OTRjMzE5
NTBhYmUxMTMzN2FkMzA2OWUwNzc0NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpeCBzdGFsZSBhc3NlcnRpb24gaW4gSW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlIGFmdGVyIHIyODQ3NTcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjVhNjE5ZTdhNWRi
NTIwNzY4YWFmODkxYmI2OTM2NTI4NTRlYWI0My4uZGM4NzI4MDA0NjM0NThiNmE2NjFiOTdiMjQ0
ODIzYzFmZGU0M2I0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMC0yNSAgUGhpbGlwIENo
aW1lbnRvICA8cGNoaW1lbnRvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50
IFRlbXBvcmFsLkluc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6IERvbid0IHVzZSBidWlsdGluIG9w
ZXJhdGlvbnMgaWYgX19pbnQxMjggaXMKKyAgICAgICAgICBiZWluZyBlbXVsYXRlZCB1c2luZyBX
VEY6OkludDEyOC4gQWxzbyB3b3JrIGFyb3VuZCBDbGFuZy9MaW51eCBidWcKKyAgICAgICAgICB3
aGVyZSBfX2J1aWx0aW5fbXVsX292ZXJmbG93KCkgZG9lc24ndCB3b3JrIG9uIF9faW50MTI4Lgor
ICAgICAgICAgIFNlZSBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0
CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OnRpbWVUb01TKTogTW92
ZWQgZnJvbSBKU0RhdGVNYXRoLmguCisKIDIwMjEtMTAtMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEludDEyOCBvcGVyYXRvciogY29u
c3RleHByCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGI5MTgyY2VkMTAx
OTUxYThkMDA1YjA2YjdlMTdjMTk2MWFkYTA3Ni4uOTJiZjk1NjNiZjlkZjliODNlY2U4NTM0MjVi
Mjk1NzZhMzEyNmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEz
LDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBy
dW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCisg
ICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1w
b3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNWM0N2FmOTlk
NDE3OGIyYzllNjRkMjU1ZThlOTMzYzA4MDEyNDFkNi4uNzY4MTMwYjBiNzAzZWFlMjA1NjE4M2Fi
NjhhNzQzNTZmMjc3ZjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsxNzUsOCBAQCAkKFBST0pF
Q1RfRElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVD
VF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Iu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggMTEyMjlkNTdiMmIzYmU4OGYxODBjYzZlODA3MTczNWVlNGNm
YTllYy4uNjVmNDk2ZjI4MmM3MTA3ODk2MDJjNThhNTVmMWZjZTk4ZGJkZDJjNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5k
YXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA5YTYzOTIzN2Y4YjI5ZDZjZmU4OGM2Y2JjMjFkNmE5MmM1YjczMzkyLi40
ZWNhZTNmMDU5ODEzOThjYmY2M2E0Njc5ZWU4ZGZjZmViNDY4NmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjAwLDYgKzIwMCw4IEBAIE9CSkVDVF9M
VVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIFwKICAg
ICBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5o
IFwKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsTm93
Lmx1dC5oIFwKICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVj
NTZjMTBlYWEwZTRmMDZhMmUzMGUzYWFiNjQ2YTBmMGRiYjY4YzguLmFhZTEwYmM0YjM2NWZjNjdh
ZWZlNzI3MTYwZDBiNTMzMmUxNTZhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xOTc0LDYgKzE5NzQsMTEgQEAKIAkJRTNGRjc1MzMxRDlDRUExODAwQzdFMTZEIC8qIERPTUpJ
VEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZD
MTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIyMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjZE
NjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5
IC8qIFRlbXBvcmFsSW5zdGFudC5oICovOyB9OworCQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmggKi87IH07CisJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZENjdENDgyNkY5MTMwQzAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUY2RjE1MDIxMjY5M0Q0NTAw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3Jh
bE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RW
aXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTA0MTU1MjI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTA1RkFGRDFG
RTRDRURBMDAwOTMyMzAgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJENkExMTFGQkQ0OTFEMDAw
MjQ1RjQgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CkBAIC01MzcwLDYg
KzUzNzUsMTQgQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdF
eHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJB
ODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pT
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgfTsKKwkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlbXBvcmFsSW5zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Qz
QjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQzI2RjkwMkU3MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE5vdy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxPYmplY3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxQTI2OTNEMzNFMDA0Qjk4
RUYgLyogVGVtcG9yYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMDQsNiAr
NzExNyw4IEBACiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3RvdHlw
ZS5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAv
KiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUY2RDY3RDQ1MjZGOTEz
MEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlG
NkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5o
ICovLAogCQkJCUY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQu
aCAqLywKIAkJCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJ
CUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmx1dC5oICovLApAQCAtODA3Myw2ICs4MDg4LDEyIEBACiAJCQkJQTNDN0VEQjQyNkIw
REIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCUEz
QzdFREI1MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcCAq
LywKIAkJCQlBM0M3RURCMDI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZS5oICovLAorCQkJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnQuY3BwICovLAorCQkJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnQuaCAqLywKKwkJCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovLAorCQkJCUY2RDY3RDNFMjZGOTAy
RTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAx
QjI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5
M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0Uw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCkBAIC0xMDgxNiw2ICsxMDgzNywxMSBA
QAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBEQjM4MDA0
QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2
N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5
OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0Uy
NkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZGQ4Y2I2
MjcyNDFiZTg4Y2VlZjA3NDU5Yzg1ZWYzYzhhOWY4YzgzNy4uMmQ1ZmM0ZjM1NGJiZmQ0ZDk5MTRj
YjJhYzIxNzA1MWY0MzFmMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAy
MCw2ICsxMDIwLDkgQEAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3IuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCitydW50aW1l
L1RlbXBvcmFsSW5zdGFudC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZW1wb3JhbFBs
YWluVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKaW5k
ZXggNTliMWM3ZWY1YjM5M2QyZGE0OWU0MjY2OTk0NDAzNjY3NjhiOWE1MC4uMGE5N2Q0MDU4M2Nh
OWYxNzA3YzZlYjRiYTY0YjBkYzE1OGJlMGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSVNPODYwMS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKICNpbmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTg3Nyw2ICs4NzksMzcgQEAgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9w
dGlvbmFsPFRpbWUKICAgICB9KTsKIH0KIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNl
SW5zdGFudChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGVtcG9yYWxJbnN0YW50U3RyaW5nCisgICAgLy8gVGVtcG9y
YWxJbnN0YW50U3RyaW5nIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lWm9uZU9mZnNldFJlcXVpcmVk
CisgICAgLy8gICAgIERhdGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMgVGltZVpvbmVPZmZz
ZXRSZXF1aXJlZAorCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNw
cm9kLVRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyBUaW1lWm9uZU9mZnNldFJlcXVpcmVk
IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXQgVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0
aW9uX29wdAorCisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtd
KGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4geworICAgICAgICBhdXRv
IGRhdGV0aW1lID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWRhdGV0aW1l
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBbZGF0ZSwg
bWF5YmVUaW1lLCBtYXliZVRpbWVab25lXSA9IGRhdGV0aW1lLnZhbHVlKCk7CisgICAgICAgIGlm
ICghbWF5YmVUaW1lWm9uZSB8fCAoIW1heWJlVGltZVpvbmUtPm1feiAmJiAhbWF5YmVUaW1lWm9u
ZS0+bV9vZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
Ly8gRklYTUU6IHBhcnNlIGNhbGVuZGFyIGFubm90YXRpb24KKyAgICAgICAgaWYgKCFidWZmZXIu
YXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgUGxh
aW5UaW1lIHRpbWU7CisgICAgICAgIGlmIChtYXliZVRpbWUpCisgICAgICAgICAgICB0aW1lID0g
bWF5YmVUaW1lLnZhbHVlKCk7CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBtYXliZVRpbWVa
b25lLT5tX3ogPyAwIDogKm1heWJlVGltZVpvbmUtPm1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
eyBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIoKSwgZGF0ZS5tb250
aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwgdGltZS5zZWNvbmQo
KSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRpbWUubmFub3NlY29u
ZCgpLCBvZmZzZXQpIH07CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWZvcm1hdHRpbWV6b25lb2Zmc2V0c3RyaW5nCiBTdHJp
bmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiB7CkBAIC05Njks
NSArMTAwMiwxMjkgQEAgYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mIGR1cmF0
aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitFeGFjdFRpbWUgRXhhY3RUaW1lOjpmcm9tSVNP
UGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25l
ZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNy
b3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQoeSA+PSAtOTk5
OTk5ICYmIHkgPD0gOTk5OTk5KTsKKyAgICBBU1NFUlQobW9uID49IDEgJiYgbW9uIDw9IDEyKTsK
KyAgICBBU1NFUlQoZCA+PSAxICYmIGQgPD0gMzEpOworICAgIEFTU0VSVChoIDw9IDIzKTsKKyAg
ICBBU1NFUlQobWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA8PSA1OSk7CisgICAgQVNTRVJUKG1z
IDw9IDk5OSk7CisgICAgQVNTRVJUKG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA8PSA5
OTkpOworCisgICAgZG91YmxlIGRhdGVEYXlzID0gZGF0ZVRvRGF5c0Zyb20xOTcwKHksIG1vbiAt
IDEsIGQpOworICAgIGRvdWJsZSB0aW1lTXMgPSB0aW1lVG9NUyhoLCBtaW4sIHMsIG1zKTsKKyAg
ICBkb3VibGUgdXRjTXMgPSBkYXRlRGF5cyAqIG1zUGVyRGF5ICsgdGltZU1zOworICAgIEludDEy
OCB1dGNOcyA9IHN0YXRpY19jYXN0PEludDEyOD4odXRjTXMpICogMScwMDAnMDAwICsgbWljcm9z
ICogMTAwMCArIG5zOworICAgIHJldHVybiBFeGFjdFRpbWUgeyB1dGNOcyAtIG9mZnNldCB9Owor
fQorCit1c2luZyBDaGVja2VkSW50MTI4ID0gQ2hlY2tlZDxJbnQxMjgsIFJlY29yZE92ZXJmbG93
PjsKKworc3RhdGljIENoZWNrZWRJbnQxMjggY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkb3Vi
bGUgbikKK3sKKyAgICAvLyBCYXNlZCBvbiBfX2ZpeGRmdGkoKSBhbmQgX19maXh1bnNkZnRpKCkg
ZnJvbSBjb21waWxlcl9ydDoKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXBy
b2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBp
bGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXhpbnRfaW1wbC5pbmMKKyAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2
YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwu
aW5jCisKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzaWduaWZpY2FuZEJpdHMgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgZXhwb25lbnRCaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46OmRpZ2l0cyAt
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGV4cG9uZW50QmlhcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2V4
cG9uZW50IC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGltcGxpY2l0Qml0ID0g
dWludDY0X3QgeyAxIH0gPDwgc2lnbmlmaWNhbmRCaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDY0X3Qgc2lnbmlmaWNhbmRNYXNrID0gaW1wbGljaXRCaXQgLSB1aW50NjRfdCB7IDEgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNpZ25NYXNrID0gdWludDY0X3QgeyAxIH0g
PDwgKHNpZ25pZmljYW5kQml0cyArIGV4cG9uZW50Qml0cyk7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50NjRfdCBhYnNNYXNrID0gc2lnbk1hc2sgLSB1aW50NjRfdCB7IDEgfTsKKworICAgIC8v
IEJyZWFrIG4gaW50byBzaWduLCBleHBvbmVudCwgc2lnbmlmaWNhbmQgcGFydHMuCisgICAgY29u
c3QgdWludDY0X3QgYml0cyA9ICpyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oJm4pOworICAg
IGNvbnN0IHVpbnQ2NF90IG5BYnMgPSBiaXRzICYgYWJzTWFzazsKKyAgICBjb25zdCBpbnQgc2ln
biA9IGJpdHMgJiBzaWduTWFzayA/IC0xIDogMTsKKyAgICBjb25zdCBpbnQgZXhwb25lbnQgPSAo
bkFicyA+PiBzaWduaWZpY2FuZEJpdHMpIC0gZXhwb25lbnRCaWFzOworICAgIGNvbnN0IHVpbnQ2
NF90IHNpZ25pZmljYW5kID0gKG5BYnMgJiBzaWduaWZpY2FuZE1hc2spIHwgaW1wbGljaXRCaXQ7
CisKKyAgICAvLyBJZiBleHBvbmVudCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB6ZXJvLgor
ICAgIGlmIChleHBvbmVudCA8IDApCisgICAgICAgIHJldHVybiB7IDAgfTsKKworICAgIC8vIElm
IHRoZSB2YWx1ZSBpcyB0b28gbGFyZ2UgZm9yIHRoZSBpbnRlZ2VyIHR5cGUsIG92ZXJmbG93Lgor
ICAgIGlmIChleHBvbmVudCA+PSAxMjgpCisgICAgICAgIHJldHVybiB7IFdURjo6UmVzdWx0T3Zl
cmZsb3dlZCB9OworCisgICAgLy8gSWYgMCA8PSBleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cywg
cmlnaHQgc2hpZnQgdG8gZ2V0IHRoZSByZXN1bHQuCisgICAgLy8gT3RoZXJ3aXNlLCBzaGlmdCBs
ZWZ0LgorICAgIEludDEyOCByZXN1bHQgeyBzaWduaWZpY2FuZCB9OworICAgIGlmIChleHBvbmVu
dCA8IHNpZ25pZmljYW5kQml0cykKKyAgICAgICAgcmVzdWx0ID4+PSBzaWduaWZpY2FuZEJpdHMg
LSBleHBvbmVudDsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA8PD0gZXhwb25lbnQgLSBzaWdu
aWZpY2FuZEJpdHM7CisgICAgcmVzdWx0ICo9IHNpZ247CisgICAgcmV0dXJuIHsgcmVzdWx0IH07
Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBk
dXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFT
U0VSVCghZHVyYXRpb24ubW9udGhzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7
CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlzKCkpOworCisgICAgQ2hlY2tlZEludDEyOCByZXN1
bHROcyB7IG1fZXBvY2hOYW5vc2Vjb25kcyB9OworCisgICAgLy8gVGhlIGR1cmF0aW9uJ3MgaG91
cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBtaWxsaXNlY29uZHMgc2hvdWxkIGJlCisgICAgLy8g
YWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1iaXQgaW50LiAyKjFlOCAyNC1ob3VyIGRheXMgaXMg
dGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNwYW4gZm9yIGV4YWN0IHRpbWUsIHNvIGlmIHdlIGFs
cmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlvbiBleGNlZWRzCisgICAgLy8gdGhhdCwgdGhlbiB3
ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBDaGVja2VkSW50MTI4IGhvdXJzID0gY2hlY2tlZENhc3RE
b3VibGVUb0ludDEyOChkdXJhdGlvbi5ob3VycygpKTsKKyAgICByZXN1bHROcyArPSBob3VycyAq
IEV4YWN0VGltZTo6bnNQZXJIb3VyOworICAgIENoZWNrZWRJbnQxMjggbWludXRlcyA9IGNoZWNr
ZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWludXRlcygpKTsKKyAgICByZXN1bHROcyAr
PSBtaW51dGVzICogRXhhY3RUaW1lOjpuc1Blck1pbnV0ZTsKKyAgICBDaGVja2VkSW50MTI4IHNl
Y29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLnNlY29uZHMoKSk7Cisg
ICAgcmVzdWx0TnMgKz0gc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgQ2hl
Y2tlZEludDEyOCBtaWxsaXNlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0
aW9uLm1pbGxpc2Vjb25kcygpKTsKKyAgICByZXN1bHROcyArPSBtaWxsaXNlY29uZHMgKiBFeGFj
dFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7CisgICAgQ2hlY2tlZEludDEyOCBtaWNyb3NlY29uZHMg
PSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpKTsKKyAg
ICByZXN1bHROcyArPSBtaWNyb3NlY29uZHMgKiBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7
CisgICAgcmVzdWx0TnMgKz0gY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5uYW5v
c2Vjb25kcygpKTsKKyAgICBpZiAocmVzdWx0TnMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgRXhhY3RUaW1lIHJlc3VsdCB7IHJlc3VsdE5zLnZh
bHVlKCkgfTsKKyAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSW50MTI4IEV4YWN0VGltZTo6cm91
bmQoSW50MTI4IHF1YW50aXR5LCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0
LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIEludDEyOCBpbmNyZW1lbnROcyB7
IGluY3JlbWVudCB9OworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpIb3VyOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVySG91cjsgYnJlYWs7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Bl
ck1pbnV0ZTsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogaW5jcmVtZW50
TnMgKj0gRXhhY3RUaW1lOjpuc1BlclNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6Ok1pbGxpc2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNv
bmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDogaW5jcmVtZW50
TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TmFub3NlY29uZDogYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiByb3VuZE51bWJlclRvSW5jcmVtZW50
KHF1YW50aXR5LCBpbmNyZW1lbnROcywgcm91bmRpbmdNb2RlKTsKK30KKworLy8gRGlmZmVyZW5j
ZUluc3RhbnQgKCBuczEsIG5zMiwgcm91bmRpbmdJbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91
bmRpbmdNb2RlICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLWRpZmZlcmVuY2VpbnN0YW50CitJbnQxMjggRXhhY3RUaW1lOjpkaWZmZXJlbmNlKEV4
YWN0VGltZSBvdGhlciwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91
bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkgY29uc3QKK3sKKyAgICBJbnQxMjggZGlmZiA9IG90aGVy
Lm1fZXBvY2hOYW5vc2Vjb25kcyAtIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICByZXR1cm4gcm91
bmQoZGlmZiwgaW5jcmVtZW50LCB1bml0LCByb3VuZGluZ01vZGUpOworfQorCitFeGFjdFRpbWUg
RXhhY3RUaW1lOjpyb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBS
b3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBFeGFjdFRpbWUg
eyByb3VuZChtX2Vwb2NoTmFub3NlY29uZHMsIGluY3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2Rl
KSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBjNzQyNGFlOTMxZWZlMWI1
MGRjMGFjZDIyYmYyMWI5OTcwOTU2YTZmLi5jMDdlNzdlNDEzM2I5NWY4NjZjZjA3MzA0MmEyNTMz
Mzk0OWIxMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084
NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
bmFtZXNwYWNlIElTTzg2MDEgewpAQCAtNzksNiArODAsMTIyIEBAIHByaXZhdGU6CiAgICAgc3Rk
OjphcnJheTxkb3VibGUsIG51bWJlck9mVGVtcG9yYWxVbml0cz4gbV9kYXRhIHsgfTsKIH07CiAK
K2NsYXNzIEV4YWN0VGltZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoRXhhY3RUaW1l
KTsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgRXhhY3RUaW1lKCkgPSBkZWZhdWx0OworICAgIGNv
bnN0ZXhwciBFeGFjdFRpbWUoY29uc3QgRXhhY3RUaW1lJikgPSBkZWZhdWx0OworICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBFeGFjdFRpbWUoSW50MTI4IGVwb2NoTmFub3NlY29uZHMpIDogbV9lcG9j
aE5hbm9zZWNvbmRzKGVwb2NoTmFub3NlY29uZHMpIHsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBFeGFjdFRpbWUgZnJvbUVwb2NoU2Vjb25kcyhpbnQ2NF90IGVwb2NoU2Vjb25kcykKKyAgICB7
CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hTZWNvbmRzIH0gKiBFeGFj
dFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRp
bWUgZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAg
eworICAgICAgICByZXR1cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoTWlsbGlzZWNvbmRzIH0g
KiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIEV4YWN0VGltZSBmcm9tRXBvY2hNaWNyb3NlY29uZHMoaW50NjRfdCBlcG9jaE1pY3Jvc2Vj
b25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWNy
b3NlY29uZHMgfSAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7CisgICAgfQorICAgIHN0
YXRpYyBFeGFjdFRpbWUgZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBt
b24sIHVpbnQ4X3QgZCwgdW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNp
Z25lZCBtcywgdW5zaWduZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpOwor
CisgICAgaW50NjRfdCBlcG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2No
TmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgaW50NjRf
dCBlcG9jaE1pbGxpc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vj
b25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIGludDY0X3Qg
ZXBvY2hNaWNyb3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29u
ZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIg
SW50MTI4IGVwb2NoTmFub3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
VmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorCisg
ICAgaW50IG5hbm9zZWNvbmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNl
Y29uZCk7CisgICAgfQorCisgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25k
cyA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBh
c1N0cmluZ0ltcGwoYnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNW
YWxpZEVwb2NoTmFub3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5v
c2Vjb25kcworICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1f
ZXBvY2hOYW5vc2Vjb25kcyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRz
OworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIu
bV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFu
b3NlY29uZHMgPT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwor
ICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9l
cG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhh
Y3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vj
b25kcyA+IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEV4YWN0VGltZT4gYWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5j
ZShFeGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3Vu
ZGluZ01vZGUpIGNvbnN0OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQs
IFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgY29uc3RleHByIEludDEyOCBkYXlSYW5nZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAv
LyAxZTggZGF5cworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQg
eyAxMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7
IDEnMDAwJzAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsg
MScwMDAnMDAwJzAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRl
ID0gbnNQZXJTZWNvbmQgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blckhv
dXIgPSBuc1Blck1pbnV0ZSAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZh
bHVlID0gLWRheVJhbmdlU2Vjb25kcyAqIG5zUGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4
cHIgSW50MTI4IG1heFZhbHVlID0gZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAg
ICBzdGF0aWMgdm9pZCBhc1N0cmluZ0ltcGwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3Ry
aW5nSW1wbChidWlsZGVyLCB2YWx1ZSAvIDEwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlICUgMTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSW50MTI4IHJvdW5kKEludDEyOCBxdWFudGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1w
b3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7CisKKyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRz
IHsgfTsKK307CisKIGNsYXNzIFBsYWluVGltZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoUGxhaW5UaW1lKTsKIHB1YmxpYzoKQEAgLTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9y
YWxUaW1lVG9TdHJpbmcoUGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+
IHByZWNpc2lvbgogCiBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitz
dGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8v
IG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2
M2U5NWJlZjAwNjIwYTMwNmEzYTU1ZjA0YTY1NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNl
NzA4ZDFhMmZmNTg0YjBhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAg
IFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5
KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBzdGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFs
dWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6
IHVpbnQ4X3QgeyBOb25lLCBOYXJyb3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBF
cmEgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xh
c3MgWWVhciA6IHVpbnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKaW5kZXggNzU4NGNmMGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcx
Y2YzYi4uNmU0ZDYyNWM1MDJmMjBjNDNiZjlkNjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRl
IDx3dGYvRGF0ZU1hdGguaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwogfQogCisvLyBIYW5kbGVEYXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQs
IHggKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
aGFuZGxlZGF0ZXRpbWV2YWx1ZQorZG91YmxlIEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0
ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmpl
Y3QpKTsKKworICAgIC8vIEZJWE1FOgorICAgIC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRl
bXBvcmFsIHR5cGVzCisgICAgLy8gIC0gV29yayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8v
ICAtIFJldHVybiBVRGF0ZUZvcm1hdCBhbmQgVURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcg
b24gdGhlIHR5cGUKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCB4KTsKKyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0
dXJuIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIFdURjo6dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmpl
Y3QpKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRG
dW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
MTAwLDE0ICsxMjIsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9y
bWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBmb3JtYXQgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwotICAgIGRvdWJsZSB2YWx1ZTsKLQotICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVs
c2UgewotICAgICAgICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgfQorICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFu
ZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAt
MTU2LDE0ICsxNzIsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChk
YXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1Bh
cnRzKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRS
YW5nZSwgKEpTR2xvYmFsT2IKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVm
aW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9y
bWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUg
PSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0
ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3Qs
IGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAg
ICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0
ZSJfcyk7CkBAIC0yMTIsOSArMjIyLDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBp
ZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUg
c3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBk
b3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVl
KGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6
aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0
ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFl
ZGU1NDMwY2JmMmYyNDFiMi4uNGI1OTZjMjdhNmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUs
NiArNTUsNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2
ICsyMzIsNjIgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBs
KGdsb2JhbE9iamVjdCwgdW5zaWduZWRWYWx1ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAg
IFVJbnQxMjggdW5zaWduZWRWYWx1ZTsKKyAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAo
dmFsdWUgPCAwKSB7CisgICAgICAgIHVuc2lnbmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4
PigtKHZhbHVlICsgMSkpICsgMTsKKyAgICAgICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisg
ICAgICAgIHVuc2lnbmVkVmFsdWUgPSB2YWx1ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9
IFVJTlQ2NF9NQVgpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJv
bUltcGwoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSks
IHNpZ24pKTsKKworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAg
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAg
IERpZ2l0IGxvd0JpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUpKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAg
ICAgICBBU1NFUlQoaGlnaEJpdHMpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93
Qml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBi
aWdJbnQtPnNldFNpZ24oc2lnbik7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisg
ICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0gNCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0
aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAg
ICBEaWdpdCBkaWdpdDEgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUgPj4gMzIpKTsKKyAgICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBE
aWdpdCBkaWdpdDMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVu
c2lnbmVkVmFsdWUgPj4gOTYpKTsKKworICAgIEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKwor
ICAgIGludCBsZW5ndGggPSBkaWdpdDMgPyA0IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0g
Y3JlYXRlV2l0aExlbmd0aChnbG9iYWxPYmplY3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0
MCk7CisgICAgYmlnSW50LT5zZXREaWdpdCgxLCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGln
aXQoMiwgZGlnaXQyKTsKKyAgICBpZiAoZGlnaXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0
KDMsIGRpZ2l0Myk7CisgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJ
bnQ7Cit9CisKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBib29sIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFj
MWQ4ZmI2MTAxYWI2OGQ5NzBmMDJiNzFlZGNiMzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2Fl
MmExODYxMTYzM2I2ZGE2Nzk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgPHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBj
cmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGlu
dDY0X3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3Jl
YXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQx
MjggdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVj
dCosIGJvb2wgdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSB2YWx1ZSk7CiAKQEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChK
U0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHRvVWludDY0SGVhcChKU0JpZ0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNCaWdJbnQsIG1fZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguY3BwCmluZGV4IGRhZTliM2E5YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJj
ZmYuLjUyMTlmOGY3MjQyYjg2Zjk0MGU4MjgyMzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2
IEBAIExvY2FsVGltZU9mZnNldCBEYXRlQ2FjaGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWls
bGlzZWNvbmRzRnJvbUVwb2NoLCBXVEY6OlRpCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3Rh
dGljIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJs
ZSBzZWMsIGRvdWJsZSBtcykKLXsKLSAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1Bl
ckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJT
ZWNvbmQgKyBtcyk7Ci19Ci0KIGRvdWJsZSBEYXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9N
Uyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpU
aW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogewogICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJv
bTE5NzAodC55ZWFyKCksIHQubW9udGgoKSwgdC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ZWM5MTJjNWQw
OTMwMzBmOTQyMzFiMjhiOTM4ZDEzNTA3Y2FhMjA0Li41Mjg1MWQ1MTE1ZDc5NzlhYWQ1ZWQ4YTU1
YzhjZDA2NDY0ZTdlMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMTAsNiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbElu
c3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBv
cmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0
aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAgICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1
Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVj
dHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAg
ICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0
YW50OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90
eXBlKSk7CisgICAgICAgICAgICB9KTsKKwogICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5p
bml0TGF0ZXIoCiAgICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYg
aW5pdCkgewogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMjE2Niw2ICsyMTc1LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9y
KTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwor
ICAgIHRoaXNPYmplY3QtPm1faW5zdGFudFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZTczNjQ0NjMy
ZjVlYzg5ZmM4YmY1ZDYzZmYxMDg2NDZjN2UzMjgwLi5mNjUwYTNkODllZjJhNWUwNWFiY2NhMTkz
ZTZkNTZjNzQyNmNlNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVj
dHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0
YW50U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX3BsYWluVGltZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV90aW1lWm9uZVN0cnVjdHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1
YmxpYzoKIAogICAgIFN0cnVjdHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Nh
bGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1
Y3R1cmUoKSB7IHJldHVybiBtX2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0
cnVjdHVyZSogaW5zdGFudFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fcGxhaW5UaW1lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpv
bmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCmluZGV4IDkzNGJlYjA5YTcwYjc2ZmZhMmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1
NDY2ZDk4ZWZmOWY2NGZkMDk3OWRjOTAwNzQxYmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1
LDMxIEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJh
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxE
dXJhdGlvbkxpa2UsIGRpc2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNP
ODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlv
bihnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmICghaXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9u
IHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6
IGRpc2FsbG93ZWRVbml0cykgeworICAgICAgICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJB
ZGRpbmcgIl9zLCB0ZW1wb3JhbFVuaXRQbHVyYWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1Ymxp
Y05hbWUoKSwgIiBub3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVy
YXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5o
CmluZGV4IDgyZjJkNWQ2NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDlj
ZGRkNzc1YjExNWQxN2QxZTFjZWZjMTQyNzdkNDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVi
bGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0
b1RlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMg
SVNPODYwMTo6RHVyYXRpb24gdG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMp
OwogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUsIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGU5ODE4NWIyZjJmNDc5YzZiMzA0M2U0ZDg3
YTRlNGZiZDFmNGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApAQCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2lu
Y2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJN
YXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShUZW1wb3JhbEluc3RhbnQpIH07CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50Ojpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9
CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBB
U1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0
YW50KHZtLCBzdHJ1Y3R1cmUsIGV4YWN0VGltZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50
ICggZXBvY2hOYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitU
ZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFj
dFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBtYWtlU3RyaW5nKGV4YWN0VGltZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNv
bmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9z
KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUo
dm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVy
ZSgpLCBleGFjdFRpbWUpOworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6
dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
SlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzID0gdmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBpZiAoZXBvY2hOYW5vc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCB0b3RhbCA9IGVwb2NoTmFub3NlY29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAg
ICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NF
UlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVj
dHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFj
dFRpbWUpOworICAgIH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJp
Z0ludChlcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsK
KyAgICBJbnQxMjggdG90YWw7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRp
Z2l0KSA9PSA0KSB7CisgICAgICAgIEludDEyOCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8g
YmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAgICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5n
dGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEpIDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBi
aWdpbnQtPmxlbmd0aCgpID4gMiA/IGJpZ2ludC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRv
dGFsID0gZDIgPDwgNjQgfCBkMSA8PCAzMiB8IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0g
YmlnaW50LT5sZW5ndGgoKSA+IDM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVv
ZihKU0JpZ0ludDo6RGlnaXQpID09IDgpOworICAgICAgICBJbnQxMjggbG93IHsgYmlnaW50LT5s
ZW5ndGgoKSA+IDAgPyBiaWdpbnQtPmRpZ2l0KDApIDogMCB9OworICAgICAgICBJbnQxMjggaGln
aCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAg
ICAgdG90YWwgPSBoaWdoIDw8IDY0IHwgbG93OworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmln
aW50LT5sZW5ndGgoKSA+IDI7CisgICAgfQorICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRp
bWUgeyB0b3RhbCAqIChiaWdpbnQtPnNpZ24oKSA/IC0xIDogMSkgfTsKKworICAgIGlmIChiaWdJ
bnRUb29Mb25nIHx8ICFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBhcmdB
c1N0cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CisgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7Cisg
ICAgICAgIH0KKworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
bWFrZVN0cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vj
b25kcyBpcyBvdXRzaWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3Rh
bnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNy
ZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3Ry
dWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisKKy8vIFRvVGVtcG9yYWxJbnN0YW50ICggaXRlbSAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3Rl
bXBvcmFsaW5zdGFudAorVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbElu
c3RhbnQ+KHZtKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVt
VmFsdWUpOworCisgICAgLy8gRklYTUU6IHdoZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5k
cworICAgIC8vIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2
bSkpCisgICAgLy8gICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+
KGl0ZW1WYWx1ZSktPmVwb2NoVGltZSgpKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworICAgIGF1dG8gcGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFy
c2VJbnN0YW50KHN0cmluZyk7CisgICAgaWYgKCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVs
bGlwc2l6ZUF0KDEwMCwgc3RyaW5nKSwgIicgaXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFu
dCBzdHJpbmciX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFy
c2VkRXhhY3RUaW1lLnZhbHVlKCkpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICgg
aXRlbSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC5pbnN0YW50LmZyb20KK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8
VGVtcG9yYWxJbnN0YW50Pih2bSkpIHsKKyAgICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0
VGltZSA9IGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpLT5leGFjdFRpbWUoKTsK
KyAgICAgICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
Pmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9J
bnN0YW50KGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzICggZXBvY2hTZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25k
c1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAo
IWlzSW50ZWdlcihlcG9jaFNlY29uZHMpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxp
ZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084
NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaFNlY29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFj
dFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMg
KCBlcG9jaE1pbGxpc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJ
bnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2No
TWlsbGlzZWNvbmRzVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAg
MQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2NoTWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vj
b25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29u
ZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6
RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlz
ZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0
YW50LmZyb21lcG9jaG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRv
QmlnSW50KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGVwb2NoTWljcm9zZWNvbmRzLmlz
QmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IG1pY3Jvc2Vjb25kcyA9IGVwb2NoTWljcm9z
ZWNvbmRzLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBhdXRvIGV4YWN0VGltZSA9IElTTzg2
MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAg
ICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQor
I2VuZGlmCisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9z
ZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmc7CisgICAgaWYgY29uc3RleHByIChzaXpl
b2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KQorICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50
LT5sZW5ndGgoKSA+IDI7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoSlNCaWdJ
bnQ6OkRpZ2l0KSA9PSA4KTsKKyAgICAgICAgYmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3Ro
KCkgPiAxOworICAgIH0KKyAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kcyA9IEpTQmlnSW50Ojp0b0Jp
Z0ludDY0KGJpZ2ludCk7CisgICAgYXV0byBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6
OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOworCisgICAgaWYgKGJpZ0ludFRv
b0xvbmcgfHwgIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0FzU3Ry
aW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgaWYgKHNj
b3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwor
ICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAg
ICAgfQorCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtl
U3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJnQXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25k
cyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8g
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29uZHMg
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5z
dGFudC5mcm9tZXBvY2huYW5vc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKQoreworICAgIHJldHVybiB0cnlDcmVhdGVJZlZh
bGlkKGdsb2JhbE9iamVjdCwgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKTsKK30KKworLy8gVGVtcG9y
YWwuSW5zdGFudC5jb21wYXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBv
cmFsSW5zdGFudDo6Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG9uZVZhbHVlLCBKU1ZhbHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBUZW1wb3JhbEluc3RhbnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJ
bnN0YW50KiB0d28gPSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmV4YWN0VGltZSgp
ID4gdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlm
IChvbmUtPmV4YWN0VGltZSgpIDwgdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpz
TnVtYmVyKC0xKTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6OkR1cmF0
aW9uIFRlbXBvcmFsSW5zdGFudDo6ZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZW1wb3JhbEluc3RhbnQqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0
T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNt
YWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21h
bGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFRlbXBvcmFs
VW5pdCBkZWZhdWx0TGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRlbXBvcmFs
VW5pdDo6U2Vjb25kKTsKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGds
b2JhbE9iamVjdCwgb3B0aW9ucywgeyB9LCBkZWZhdWx0TGFyZ2VzdFVuaXQpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0
ID0gbGFyZ2VzdC52YWx1ZV9vcihkZWZhdWx0TGFyZ2VzdFVuaXQpOworCisgICAgaWYgKHNtYWxs
ZXN0ICYmIGxhcmdlc3QgJiYgc21hbGxlc3QgPCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxl
ciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heEluY3Jl
bWVudCA9IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpOworICAgIEFTU0VS
VChtYXhJbmNyZW1lbnQgJiYgKm1heEluY3JlbWVudCA8PSAxMDAwKTsgLy8gdW5ib3VuZGVkIGlu
Y3JlbWVudHMgYXJlIGltcG9zc2libGUgd2l0aCBUZW1wb3JhbC5JbnN0YW50CisgICAgdW5zaWdu
ZWQgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIG1heEluY3JlbWVudCwgZmFsc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBJbnQxMjggcm91bmRlZERpZmYgPSBleGFjdFRpbWUoKS5kaWZmZXJl
bmNlKG90aGVyLT5leGFjdFRpbWUoKSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5n
TW9kZSk7CisgICAgLy8gTk9URTogRHVyYXRpb24gZmllbGRzIGFyZSBjdXJyZW50bHkgZG91Ymxl
cywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YKKyAgICAvLyBuYW5vc2Vjb25kcyBtYXkgbm90IGZp
dCBpbiBhIGRvdWJsZS4gVGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UgaWYgdGhlCisgICAgLy8gaW50
ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHVyYXRpb24gY2hhbmdlcy4KKyAgICBBU1NFUlQocm91
bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwIDwgSU5UNjRfTUFYKTsKKyAgICBkb3VibGUgc2Vjb25k
cyB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYg
LyAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBkb3VibGUgbmFub3NlY29uZHNSZW1haW5kZXIgeyBz
dGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJvdW5kZWREaWZmICUgMScw
MDAnMDAwJzAwMCkpIH07CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0IHsgMCwgMCwgMCwg
MCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5kZXIgfTsKKworICAgIFRl
bXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5p
dCBzbWFsbGVzdFVuaXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNl
IFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpN
aW51dGU6IHJldHVybiAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVy
biA4NjQwMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0
ZTc7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgor
ICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6
CisgICAgZGVmYXVsdDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK0lTTzg2MDE6OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJv
dW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBj
b25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGlu
dGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBv
cmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6Olll
YXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0
OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
ICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0g
c21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFJvdW5k
aW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5k
aW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bUluY3JlbWVudChzbWFs
bGVzdFVuaXQpLCB0cnVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIGV4YWN0VGltZSgpLnJvdW5kKGluY3JlbWVudCwgc21hbGxlc3RVbml0LCBy
b3VuZGluZ01vZGUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmlu
ZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbElu
c3RhbnQ6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRp
b25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9u
ZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB0aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgdGltZVpvbmUgPSBUZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9i
amVjdCwgdGltZVpvbmVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisgICAgfQorCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1By
ZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxS
b3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0
byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgor
ICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYm
IHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9T
dHJpbmcodGltZVpvbmUpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7
IGV4YWN0VGltZSgpLnJvdW5kKGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9k
ZSkgfTsKKworICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAg
Ly8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJlICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50KHJvdW5k
ZWROcykuCisgICAgLy8gLi4uCisgICAgLy8gMS4gSWYgX291dHB1dFRpbWVab25lXyBpcyAqdW5k
ZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4gU2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8gISBDcmVh
dGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiopLgorICAgIC8vIDEuIExldCBfaXNvQ2FsZW5kYXJf
IGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCkuCisgICAgLy8gMS4gTGV0IF9kYXRlVGltZV8gYmUg
PyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRhdGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9p
bnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisgICAgSlNPYmplY3QqIG91dHB1dFRpbWVab25lID0g
dGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRpbWVab25lKSB7CisgICAgICAgIHRocm93Vk1FcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6IFRlbXBvcmFsLkluc3RhbnQudG9TdHJpbmco
e3RpbWVab25lfSkgbm90IGltcGxlbWVudGVkIHlldCJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nKG5ld0V4YWN0VGltZSwgdGltZVpvbmUsIGRh
dGEpOworfQorCisvLyBUZW1wb3JhbEluc3RhbnRUb1N0cmluZyAoIGluc3RhbnQsIHRpbWVab25l
LCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6
OnRvU3RyaW5nKElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9u
ZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3Jl
Z29yaWFuRGF0ZVRpbWUgeyBzdGF0aWNfY2FzdDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxp
c2Vjb25kcygpKSwgTG9jYWxUaW1lT2Zmc2V0IHsgfSB9OworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKworICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAxMDAw
IGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvCisgICAgLy8gdXNlIHRoZSBleHRlbmRlZCB5
ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisgICAgdW5zaWduZWQgeWVhckxlbmd0aCA9IDQ7Cisg
ICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRp
bWUueWVhcigpIDwgMTAwMCkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChncmVnb3JpYW5EYXRl
VGltZS55ZWFyKCkgPCAwID8gJy0nIDogJysnKTsKKyAgICAgICAgeWVhckxlbmd0aCA9IDY7Cisg
ICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFyTGVuZ3Ro
LCBzdGQ6OmFicyhncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkpKSwKKyAgICAgICAgJy0nLCBwYWQo
JzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5tb250aCgpICsgMSksCisgICAgICAgICctJywgcGFk
KCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSksCisgICAgICAgICdUJywgcGFk
KCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUuaG91cigpKSwKKyAgICAgICAgJzonLCBwYWQoJzAn
LCAyLCBncmVnb3JpYW5EYXRlVGltZS5taW51dGUoKSkpKTsKKworICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIGludCBmcmFjdGlvbiB7
IGV4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAw
KQorICAgICAgICBmcmFjdGlvbiArPSBuc1BlclNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNT
dHJpbmdQYXJ0KGJ1aWxkZXIsIGdyZWdvcmlhbkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwg
cHJlY2lzaW9uKTsKKworICAgIGlmICh0aW1lWm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlz
c2luZywgcmVsaWVzIG9uIFRpbWVab25lOgorICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVT
dHJpbmdfIGJlID8gQnVpbHRpblRpbWVab25lR2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8s
IF9pbnN0YW50XykuCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5MzdjN2Vm
YTNhZDQwNTZjMzliYTEyNmEzOWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFRlbXBvcmFsSW5zdGFudCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZt
LnRlbXBvcmFsSW5zdGFudFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBv
cmFsSW5zdGFudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RXhhY3RUaW1lKTsK
KyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2Jq
ZWN0KiwgSVNPODYwMTo6RXhhY3RUaW1lLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUsIFN0cnVjdHVyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdG9JbnN0YW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21F
cG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9y
YWxJbnN0YW50KiBmcm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9t
RXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBK
U1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKworICAg
IElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGlt
ZS5nZXQoKTsgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9i
amVjdCosIFRlbXBvcmFsSW5zdGFudCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNP
ODYwMTo6RXhhY3RUaW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBj
b25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlv
bnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxs
cHRyLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwg
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gdG9TdHJpbmcoZXhhY3RUaW1lKCksIHRpbWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpF
eGFjdFRpbWUpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBhcnNlKFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RXhhY3RUaW1l
IGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhJU084NjAxOjpFeGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJl
Y2lzaW9uRGF0YSk7CisKKyAgICBQYWNrZWQ8SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4YWN0VGlt
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJhYTQyODBhMWNlNjcwOTBhNjc4MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpOworCitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNG
cm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNv
bmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5v
c2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgJnRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpIH07CisKKy8qIFNv
dXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgICAgICAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZy
b21FcG9jaE1pbGxpc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVw
b2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pY3Jvc2Vj
b25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRz
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3JGdW5jQ29tcGFyZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisq
LworCitUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFudFByb3RvdHlwZSk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihjYWxsVGVtcG9yYWxJbnN0YW50KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCk7CisKK1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0YW50LCBj
b25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAi
SW5zdGFudCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBpbnN0YW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgaW5zdGFudFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJV
Q1RVUkUodm0sIGluc3RhbnRTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxl
ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vj
b25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRl
SWZWYWxpZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIHN0
cnVjdHVyZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbElu
c3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnN0YW50IikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsSW5zdGFudDo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yRnVuY0Zyb21FcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1w
b3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25k
cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2No
TWljcm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoTmFub3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsSW5zdGFudDo6Y29tcGFyZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNkZWRlMmEy
MTg5NWE4ZjJmNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1
bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZDk4Y2FiYjIwMDU0NWJkNDdhNTQyMmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcApAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJp
bmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWls
bGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3Nl
Y29uZHMpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJhc2U6OnNfaW5mbywgJmlu
c3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAg
ICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
dW50aWwgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAgICAgICAgICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICByb3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1JvdW5kICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAg
ICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0
b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VmFsdWVPZiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlcG9jaFNlY29uZHMg
ICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAgICAgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWlsbGlzZWNvbmRzICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
R2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBwcm90
b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0aWFsaXplcl9saXN0PFRl
bXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7CisgICAgVGVtcG9yYWxVbml0
OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9yYWxVbml0OjpXZWVr
LAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAorfTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIElu
c3RhbnQiX3MpOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1
cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5l
d0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZChkdXJhdGlvbik7CisgICAgaWYg
KCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9y
YWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlD
cmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1
cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0
aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRp
bWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNp
ZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0
LCAqbmV3RXhhY3RUaW1lKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBU
ZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6
dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5z
dGFudC0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1
Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJ
bnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRp
b25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1
bHQgPSBvdGhlci0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJh
dGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOwor
CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGds
b2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNF
cXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFu
dCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFs
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9y
YWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQt
PmV4YWN0VGltZSgpID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9z
dHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
aW5zdGFudC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGlu
c3RhbnQtPnRvU3RyaW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBh
IEpTQnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBv
cmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfcyk7CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxE
YXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBm
b3JtYXR0ZXItPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGlt
ZUZvcm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5z
dGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4g
VG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJf
cyk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWlu
c3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKwor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVw
b2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0
dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWlu
c3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJ
bnQzMihnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRz
KCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xv
YmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIx
NDY5ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGZmMGJjZmRjZjgyZDIyMWQxZWNi
ODVhOGMxYjQ2YjY1MWI0ZGI3MzUuLjg5NDZhMGNjNjEwNDg0Zjg4MjRmNWNmZGU3Y2Y0YjczOTg1
YzlkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9i
amVjdC5jcHAKQEAgLTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1
cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVP
YmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3Jh
bE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwor
ICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90
eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3Ry
dWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0
ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2
ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAg
Q2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQ
cm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0
b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVh
dGVJbnN0YW50Q29uc3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAg
Tm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQ
cm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVj
dG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVh
dGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAg
LTM3NCw2ICszODUsMTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8v
IEZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNv
bmQsIG5hbm9zZWNvbmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3Jt
YXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNv
bmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBp
ZiAocHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAg
Zm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24u
cHJlY2lzaW9uKTsKK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3Jl
bWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5p
dCkKQEAgLTQzNSw2ICs0NTcsNDMgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91
YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQor
eworICAgIHJldHVybiB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0
IHdpdGggSW50MTI4CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50
MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9
PSAxKQorICAgICAgICByZXR1cm4geDsKKworICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNy
ZW1lbnQ7CisgICAgSW50MTI4IHJlbWFpbmRlciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFy
ZW1haW5kZXIpCisgICAgICAgIHJldHVybiB4OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVy
IDwgMDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoK
KyAgICAgICAgaWYgKCFzaWduKQorICAgICAgICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAg
ICAgICAgICAgIHF1b3RpZW50LS07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpUcnVuYzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQ6CisgICAgICAgIC8vICJoYWxmIHVwIGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAo
YWJzKHJlbWFpbmRlciAqIDIpID49IGluY3JlbWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9
IHNpZ24gPyAtMSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGll
bnQgKiBpbmNyZW1lbnQ7Cit9CisKIFRlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAg
IHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggNzkxNTc5OGNk
Yjk4YWI3NDU4M2I4YzhhYzM2YTU1ZDFiNDVmMWMxNC4uYWIzYjI5MzNmNTNhOGNhNmQ2NjFkMjZm
NmQ3MTliNzc5YzJkNjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE9iamVjdC5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtMTA1LDkgKzEwNiwxMSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0
ZW1wb3JhbEZyYWN0aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAog
UHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIG9wdGlvbnMpOwogUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqLCBSb3VuZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRz
U3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1
cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+KTsKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQo
U3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIHNlY29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNp
c2lvbkRhdGEpOwogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVu
dChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlk
ZW5kLCBib29sIGluY2x1c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3Vi
bGUsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJU
b0luY3JlbWVudChJbnQxMjgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVu
dW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyZmFjNzM0MzU0ODllYjcwZDRkOTZlOGQy
OWIzNGJkM2I2OGRiOGNmLi45Y2Y1ZmVhMDE5ODQ5ZGI2ZTY2MDkxMGJiOTQ1MWNkMjdjMjVmYmM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAK
ICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFu
dC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxU
aW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgpAQCAtMTU5Nyw2ICsxNTk4
LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVj
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgVGVtcG9yYWxJbnN0YW50KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlbXBvcmFsUGxhaW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9y
YWxUaW1lWm9uZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50
OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJkZjQzMWU4NGVmMDk0ODU2YmMwMjczMGM0MGZm
ZTZlZGFhNWMxZDYuLjZmZTQ2NzQwNWJiYjQ3NGVjMjIzZDY5YjQ4MWIxOGQ2ZjBhZDNkOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTg3LDYgKzE4Nyw3IEBAIGNsYXNzIFJl
Z0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2Ns
YXNzIFRlbXBvcmFsSW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MDEs
NiArNjAyLDcgQEAgcHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25l
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5
U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIv
U291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBlZmFiNGFkM2JjOWY3MGQ2
N2ViNjIzZDA3MzE2MTA5Mjk5OGQzZTM0Li45YzFhNWZjNzQyNDE4NWRkMjk3YTAxYmVkYmZjYTAy
Y2JlZjE5NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTI5MSwxMiArMjkx
LDE4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVz
dWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgc3RhdGljIGlubGluZSBib29sIGFk
ZChMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVS
TgogICAgIHsKICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlw
ZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRl
bXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAg
IGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2Yo
UkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFJlc3VsdFR5
cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhz
LCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVz
dWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9U
KQorICAgICAgICB9CisjZW5kaWYKKyNlbmRpZgogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMs
IHJocykpIHsKICAgICAgICAgICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlm
ICgoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLSByaHMpIDwgbGhzKQpA
QCAtMzA5LDE4ICszMTUsMjMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhT
LCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfSAv
LyBpZiB0aGUgc2lnbnMgZG8gbm90IG1hdGNoIHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93
CiAgICAgICAgIHJlc3VsdCA9IGxocyArIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5k
aWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMs
IFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIENPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlm
IChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKKyNpZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXpl
b2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMpIDw9IHNpemVvZih1aW50
NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOworICAgICAgICAg
ICAgaWYgKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRp
ZgorI2VuZGlmCiAgICAgICAgIGlmICghc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAg
ICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSArIHJocykKQEAgLTMzMiwxOCArMzQzLDI2IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlw
ZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgICAgIH0gLy8gaWYgdGhlIHNpZ25zIG1hdGNo
IHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJlc3VsdCA9IGxocyAtIHJo
czsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbXVsdGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBX
QVJOX1VOVVNFRF9SRVRVUk4KICAgICB7CiAjaWYgVVNFKE1VTF9PVkVSRkxPVykKLSAgICAgICAg
UmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMs
IHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQg
PSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisgICAgICAgIC8vIERvbid0IHVz
ZSB0aGUgYnVpbHRpbiBpZiB0aGUgaW50MTI4IHR5cGUgaXMgV1RGOjpbVV1JbnQxMjhJbXBsLgor
ICAgICAgICAvLyBBbHNvIGRvbid0IHVzZSB0aGUgYnVpbHRpbiBmb3IgX19bdV1pbnQxMjhfdCBv
biBDbGFuZy9MaW51eC4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MDQKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5H
KSAmJiBPUyhMSU5VWCkpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6
ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5k
aWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0
aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2lmICFIQVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVY
KSkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKHNpZ25zTWF0Y2gobGhz
LCByaHMpKSB7CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBp
ZiAobGhzICYmIChzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxocykg
PCByaHMpCkBAIC0zNjUsNyArMzg0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5h
bWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAg
ICAgfQogICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwot
I2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIGRpdmlkZShMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgpAQCAtMzg1LDQ3
ICs0MDMsNjYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAvLyBMSFMgYW5kIFJIUyBh
cmUgdW5zaWduZWQgdHlwZXMgc28gYm91bmRzIGNoZWNrcyBhcmUgbmljZSBhbmQgZWFzeQogICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVz
dWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCiAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9hZGRf
b3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAg
ICBSZXN1bHRUeXBlIHRlbXAgPSBsaHMgKyByaHM7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExI
UykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3Qp
KSB7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywg
cmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEy
OF9UKQorICAgICAgICB9CisjZW5kaWYKKyNlbmRpZgorICAgICAgICB0ZW1wID0gbGhzICsgcmhz
OwogICAgICAgICBpZiAodGVtcCA8IGxocykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9
CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5
cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19D
T01QQVRJQkxFKQogICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0
aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UK
LSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wID0gbGhzIC0gcmhzOworI2lmIENPTVBJTEVSKEdDQ19D
T01QQVRJQkxFKQorI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNp
emVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVp
bnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxv
dyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFW
RShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgdGVtcCA9IGxo
cyAtIHJoczsKICAgICAgICAgaWYgKHRlbXAgPiBsaHMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyBy
aHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVT
RShNVUxfT1ZFUkZMT1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9f
YnVpbHRpbl9tdWxfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0j
ZWxzZQorICAgICAgICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gaWYgdGhlIGludDEyOCB0eXBl
IGlzIFdURjo6SW50MTI4SW1wbC4KKyAgICAgICAgLy8gQWxzbyBkb24ndCB1c2UgdGhlIGJ1aWx0
aW4gZm9yIF9faW50MTI4X3Qgb24gQ2xhbmcvTGludXguCisgICAgICAgIC8vIFNlZSBodHRwczov
L2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisjaWYgIUhBVkUoSU5UMTI4X1Qp
IHx8IChDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICBpZiBjb25zdGV4cHIg
KHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9m
KHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAg
ICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVS
KENMQU5HKSAmJiBPUyhMSU5VWCkpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAgICAgICAg
IGlmICghbGhzIHx8ICFyaHMpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTQzNCw3ICs0NzEsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhT
LCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3Bl
cgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7
CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGlu
ZSBib29sIGRpdmlkZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5f
VU5VU0VEX1JFVFVSTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1Nv
dXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4ZWFiYTQ2NmI2ZTZjMGFk
NjZkYzAyZjUyNTc0MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRlZTQ4NTUzNjE3ZmNhMDZkOGQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oCkBAIC0zODgsNiArMzg4LDExIEBAIGlubGluZSBpbnQgZGF5SW5Nb250aEZy
b21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAgICByZXR1cm4gZCAt
IHN0ZXA7CiB9CiAKK2lubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBt
aW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6
bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdU
Rjo6bXNQZXJTZWNvbmQgKyBtcyk7Cit9CisKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0IGlu
IG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklWQVRFIExvY2FsVGltZU9m
ZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0luTWlsbGlzZWNvbmRzLCBU
aW1lVHlwZSA9IFVUQ1RpbWUpOwogCkBAIC00MTAsNiArNDE1LDcgQEAgdXNpbmcgV1RGOjptc1Rv
SG91cnM7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJN
aW51dGU7CiB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7
Cit1c2luZyBXVEY6OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7
CiB1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxU
aW1lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA5NjExYTNjZDcwYTMxZjM1Y2VkNGJlN2NjMmFkNjBhNDk1YTZiNjgxLi43NDZj
MmE1ODI0NjNlYmY1NjMxNTQ2MmU1MTIxMDMwYmU1NTgyYTYzIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIx
LTEwLTI1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChpbnN0YW50cy5mb3JFYWNoKToKKyAgICAgICAg
KHNob3VsZFRocm93Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKGNvbnN0Lm1heFZh
bHVlLm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKHNob3VsZEJlLmVwb2NoLnN1YnRy
YWN0KToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOiBObyBuZWVkIHRvIGlnbm9yZSBh
bGwgVGVtcG9yYWwuSW5zdGFudCB0ZXN0cworICAgICAgICAgIGFueW1vcmUsIG9ubHkgdGhlIG9u
ZXMgZm9yIHRoZSB1bmltcGxlbWVudGVkIG1ldGhvZHMuCisKIDIwMjEtMTAtMjUgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBEb24ndCBicmFuY2gg
YXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZhbApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThiN2E1YjZjYTA1OTM0YTY0
NTdkNmY1NmQ5ZDVjNWI1NDFlMmE4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3RlbXBvcmFsLWluc3RhbnQuanMKQEAgLTAsMCArMSw0MDcgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZE5vdEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsID09PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBhIHZhbHVlIHRvIGJl
IGRpZmZlcmVudCBmcm9tICR7ZXhwZWN0ZWR9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworICAgIGlmICht
ZXNzYWdlICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChtZXNzYWdlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXScpIHsKKyAgICAgICAgICAg
IGlmICghbWVzc2FnZS50ZXN0KFN0cmluZyhlcnJvcikpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5nKGVycm9yKX0nIHRvIG1hdGNoICR7bWVzc2Fn
ZX0hYCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJy
b3IpLCBtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gZXBvY2gKK3sKKyAgICBj
b25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbUVwb2NoTmFub3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNo
KChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCAw
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgMCk7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQudG9TdHJpbmcoKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQudG9KU09OKCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgIH0pOwor
fQorCisvLyBwb3NpdGl2ZSBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWwor
ICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiks
CisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygxXzAwMF8wMDBfMDAw
KSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMV8wMDBf
MDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vj
b25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hOYW5vc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAwMS0wOS0wOVQwMTo0Njo0MFonKSwKKyAgICBdOwor
ICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaFNlY29uZHMsIDFfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBf
MDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjAw
MS0wOS0wOVQwMTo0Njo0MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwg
JzIwMDEtMDktMDlUMDE6NDY6NDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG5lZ2F0aXZlIGVwb2No
IHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5J
bnN0YW50KC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtMV8wMDBfMDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAwMCksCisgICAg
ICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC0xXzAwMF8wMDBfMDAw
XzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25k
cygtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JF
YWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRz
LCAtMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNl
Y29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWNyb3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4p
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxOTM4LTA0LTI0VDIyOjEz
OjIwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTkzOC0wNC0yNFQy
MjoxMzoyMFonKTsKKyAgICB9KTsKK30KKworLy8gbWF4aW50NjQgZXBvY2ggdmFsdWUKK3sKKyAg
ICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoOTIyMzM3
MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKDkyMjMzNzIwMzY4NTQ3NzU4MDduKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKSwKKyAgICBdOworICAgIGluc3Rh
bnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aFNlY29uZHMsIDkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWls
bGlzZWNvbmRzLCA5MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE1pY3Jvc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTmFub3NlY29uZHMsIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDda
Jyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMjYyLTA0LTExVDIzOjQ3
OjE2Ljg1NDc3NTgwN1onKTsKKyAgICB9KTsKK30KKworLy8gbWluaW50NjQgZXBvY2ggdmFsdWUK
K3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQo
LTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hOYW5vc2Vjb25kcygtOTIyMzM3MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicpLAorICAgIF07Cisg
ICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoU2Vjb25kcywgLTkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTWlsbGlzZWNvbmRzLCAtOTIyMzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTY3Ny0wOS0yMVQwMDoxMjo0
My4xNDUyMjQxOTJaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxNjc3
LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKTsKKyAgICB9KTsKK30KKworLy8gbWF4IEluc3Rh
bnQgcmFuZ2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFs
Lkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyg4NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoODY0MDBfMDAw
MF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5v
c2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pbGxpc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7Cisg
ICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgODY0MDBfMDAwMF8wMDAw
XzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJysy
NzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09O
KCksICcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyBtaW4gSW5z
dGFudCByYW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9y
YWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMF8w
MDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtODY0
MDBfMDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hOYW5vc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKSwKKyAgICBdOwor
ICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaFNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAw
XzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC04NjQw
MF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0
cmluZygpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC50b0pTT04oKSwgJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisK
Ky8vIHRvbyBsYXJnZQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoODY0
MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC9cYjg2NDAwMDAwMDAwMDAw
MDAwMDAwMDFcYi8pOworLy8gdG9vIHNtYWxsCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9y
YWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC8t
ODY0MDAwMDAwMDAwMDAwMDAwMDAwMVxiLyk7CisvLyBsYXJnZXIgdGhhbiBtYXhpbnQxMjgKK3No
b3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFuIDw8IDEyOW4pLCBSYW5nZUVy
cm9yLCAvXGI2ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5MTJcYi8pOworLy8g
c21hbGxlciB0aGFuIG1pbmludDEyOAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLklu
c3RhbnQoLTFuIDw8IDEyOW4pLCBSYW5nZUVycm9yLCAvLTY4MDU2NDczMzg0MTg3NjkyNjkyNjc0
OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBkb2VzIG5vdCBjcmFzaCB3aGVuIGJpZ2ludCBsb25n
ZXIgdGhhbiBtYXhpbnQzMiBkaWdpdHMKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5J
bnN0YW50KEJpZ0ludCgnOScucmVwZWF0KDIxNDc0ODM2NDcpKSksIFJhbmdlRXJyb3IpOworLy8g
Y29uc3RydWN0cyBmcm9tIHN0cmluZworc2hvdWxkQmUobmV3IFRlbXBvcmFsLkluc3RhbnQoJzAn
KS5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisvLyB0aHJvd3Mgb24gbnVtYmVyCitzaG91bGRUaHJv
dygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgwKSwgVHlwZUVycm9yKTsKKy8vIHRocm93cyBv
biBzdHJpbmcgdGhhdCBkb2VzIG5vdCBjb252ZXJ0IHRvIEJpZ0ludAorc2hvdWxkVGhyb3coKCkg
PT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoJ2FiYzEyMycpLCBTeW50YXhFcnJvcik7CisKKy8vIElu
c3RhbnQuZnJvbShpbnN0YW50KSBpcyBub3QgdGhlIHNhbWUgb2JqZWN0Cit7CisgICAgY29uc3Qg
aW5zdCA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAyMC0wMi0xMlQxMTo0MiswMTowMFtFdXJv
cGUvQW1zdGVyZGFtXScpOworICAgIHNob3VsZE5vdEJlKFRlbXBvcmFsLkluc3RhbnQuZnJvbShp
bnN0KSwgaW5zdCk7Cit9CisKKy8vIHRvU3RyaW5nCisKK3sKKyAgICBjb25zdCBpMSA9IFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyM1onKTsKKyAgICBjb25zdCBpMiA9IFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKKyAgICBjb25zdCBp
MyA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOwor
CisgICAgLy8gZGVmYXVsdCBpcyB0byBlbWl0IHNlY29uZHMgYW5kIGRyb3AgdHJhaWxpbmcgemVy
b3MgYWZ0ZXIgdGhlIGRlY2ltYWwnCisgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcoKSwgJzE5NzYt
MTEtMThUMTU6MjM6MDBaJyk7CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoKSwgJzE5NzYtMTEt
MThUMTU6MjM6MzBaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8vIHRydW5jYXRlcyB0byBtaW51dGUKKyAgICBbaTEs
IGkyLCBpM10uZm9yRWFjaCgoaSkgPT4gc2hvdWxkQmUoaS50b1N0cmluZyh7IHNtYWxsZXN0VW5p
dDogJ21pbnV0ZScgfSksICcxOTc2LTExLTE4VDE1OjIzWicpKTsKKworICAgIC8vIG90aGVyIHNt
YWxsZXN0VW5pdHMgYXJlIGFsaWFzZXMgZm9yIGZyYWN0aW9uYWwgZGlnaXRzCisgICAgc2hvdWxk
QmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7
IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDAgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5n
KHsgc21hbGxlc3RVbml0OiAnbWlsbGlzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9u
YWxTZWNvbmREaWdpdHM6IDMgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxl
c3RVbml0OiAnbWljcm9zZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmRE
aWdpdHM6IDYgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAn
bmFub3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOSB9
KSk7CisKKyAgICAvLyB0cnVuY2F0ZSBvciBwYWQgdG8gMiBwbGFjZXMKKyAgICB7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDIgfTsKKyAgICAgICAg
c2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAwLjAwWicp
OworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKKyAgICB9CisgICAgLy8gcGFkIHRvIDcgcGxhY2VzCisg
ICAgeworICAgICAgICBjb25zdCBvcHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA3
IH07CisgICAgICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQx
NToyMzowMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25z
KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMu
dG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQwMDBaJyk7CisgICAg
fQorCisgICAgLy8gcm91bmQgdG8gbmVhcmVzdAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsg
c21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcx
OTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25h
bFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyM1onKTsKKyAgICAvLyByb3VuZCB1cAorICAgIHNob3VsZEJlKGkyLnRv
U3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSks
ICcxOTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyNFonKTsKKyAgICAvLyByb3VuZCBkb3duCisgICAgWydmbG9vcicsICd0cnVu
YyddLmZvckVhY2goKHJvdW5kaW5nTW9kZSkgPT4geworICAgICAgICBzaG91bGRCZShpMi50b1N0
cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEt
MThUMTU6MjNaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNa
Jyk7CisgICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIHJvdW5kaW5nIGRvd24gaXMgdG93YXJk
cyB0aGUgQmlnIEJhbmcsIG5vdCB0b3dhcmRzIDEgQkNFCisgICAgICAgIGNvbnN0IGk0ID0gVGVt
cG9yYWwuSW5zdGFudC5mcm9tKCctMDAwMDk5LTEyLTE1VDEyOjAwOjAwLjVaJyk7CisgICAgICAg
IHNob3VsZEJlKGk0LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJywgcm91bmRpbmdN
b2RlOiAnZmxvb3InIH0pLCAnLTAwMDA5OS0xMi0xNVQxMjowMDowMFonKTsKKworICAgICAgICAv
LyByb3VuZGluZyBjYW4gYWZmZWN0IGFsbCB1bml0cworICAgICAgICBjb25zdCBpNSA9IFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5OTlaJyk7CisgICAg
ICAgIHNob3VsZEJlKGk1LnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOCwgcm91
bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMDAwMDAw
WicpOworICAgIH0KK30KKworLy8gbGVhcCBzZWNvbmQgaXMgY29uc3RyYWluZWQKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAxNi0xMi0zMVQyMzo1OTo2MFonKX1gLCAnMjAx
Ni0xMi0zMVQyMzo1OTo1OVonKTsKKy8vIHZhcmlhbnQgdGltZSBzZXBhcmF0b3JzCitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMTggMTU6MjNaJyl9YCwgJzE5NzYt
MTEtMThUMTU6MjM6MDBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMTh0MTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyB2YXJpYW50
IFVUQyBkZXNpZ25hdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTU6MjN6Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyBhbnkgbnVtYmVy
IG9mIGRlY2ltYWwgcGxhY2VzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTU6MjM6MzAuMVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjNaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEt
MThUMTU6MjM6MzAuMTIzNFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1
WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1WicpOworc2hvdWxkQmUoYCR7VGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NlonKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xMjM0NTZaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjM0NTY3WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyMzQ1Njc4WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIz
OjMwLjEyMzQ1Njc4OVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7Cisv
LyB2YXJpYW50IGRlY2ltYWwgc2VwYXJhdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAsMTJaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTJaJyk7CisvLyB2YXJpYW50IG1pbnVzIHNpZ24KK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlx1MjIxMjAyOjAwJyl9YCwgJzE5NzYtMTEt
MThUMTc6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJ1x1
MjIxMjAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnLTAwOTk5OS0xMS0xOFQxNToyMzoz
MC4xMlonKTsKKy8vIG1peHR1cmUgb2YgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAorc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTUyMzMw
LjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwgJzE5
NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMw
LjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThU
MTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjEx
MThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIzMzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKKy8vIG9wdGlvbmFsIHBhcnRzCitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzArMDAnKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNVonKX1gLCAnMTk3Ni0xMS0xOFQxNTowMDowMFonKTsKKy8vIGlnbm9y
ZXMgYW55IHNwZWNpZmllZCBjYWxlbmRhcgorLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyCisvLyBz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
NDU2Nzg5Wlt1LWNhPWRpc2NvcmRdJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5
WicpOworLy8gbm8ganVuayBhdCBlbmQgb2Ygc3RyaW5nCitzaG91bGRUaHJvdygoKSA9PiBUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wmp1bmsnKSwg
UmFuZ2VFcnJvcik7CisKKy8vIEZvciBjb252ZW5pZW5jZSBpbiBzZXZlcmFsIHRlc3RzCitjb25z
dCBlcG9jaCA9IG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKTsKK2NvbnN0IG1pblZhbHVlID0gbmV3
IFRlbXBvcmFsLkluc3RhbnQoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pOworY29uc3Qg
bWF4VmFsdWUgPSBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8w
MDBuKTsKKworLy8gYWRkKCkKKworeworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IGhvdXJzOiAx
IH0pLmVwb2NoTmFub3NlY29uZHMsIDM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBob3VyczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTM2MDBfMDAwXzAwMF8w
MDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaW51dGVzOiAxIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIDYwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWludXRl
czogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTYwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgc2Vjb25kczogLTEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWxs
aXNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgbWlsbGlzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWljcm9zZWNvbmRzOiAxIH0pLmVw
b2NoTmFub3NlY29uZHMsIDFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWljcm9z
ZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBuYW5vc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxbik7CisgICAg
c2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMs
IC0xbik7Cit9CisKK3sKKyAgICAvLyBtYXggZHVyYXRpb24gdGhhdCBjYW4gYmUgYWRkZWQgdG8g
YW55IEluc3RhbnQKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBob3VyczogNDhfMDAwMF8w
MDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAg
IHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IGhvdXJzOiAtNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFu
b3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZh
bHVlLmFkZCh7IG1pbnV0ZXM6IDI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1h
eFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1p
bnV0ZXM6IC0yODgwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9j
aE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBzZWNvbmRzOiAxNzI4
MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29u
ZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IHNlY29uZHM6IC0xNzI4MDBfMDAwMF8w
MDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAg
IC8vIG5vdGUsIHVuc2FmZSBpbnRlZ2VycyBmcm9tIGhlcmUgb247IHRoZSBtdWx0aXBsaWNhdGlv
biB0byBjb252ZXJ0CisgICAgLy8gbWlsbGlzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgdG8gbmFu
b3NlY29uZHMgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlCisgICAgLy8gYmlnaW50IGRvbWFpbi4K
KyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBtaWxsaXNlY29uZHM6IDE3MjgwMF8wMDAwXzAw
MDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOwor
ICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pbGxpc2Vjb25kczogLTE3MjgwMF8wMDAwXzAw
MDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOwor
ICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pY3Jvc2Vjb25kczogMTcyODAwXzAwMDBfMDAw
MF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pY3Jvc2Vjb25kczogLTE3MjgwMF8wMDAw
XzAwMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBuYW5vc2Vjb25kczogMTcyODAwXzAw
MDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5h
bm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5hZGQoeyBuYW5vc2Vjb25kczogLTE3
MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUu
ZXBvY2hOYW5vc2Vjb25kcyk7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxvd2luZyA2NCBiaXRzCisg
ICAgY29uc3QgZXhwNjQgPSAyICoqIDY0OworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNv
bmRzJywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTogZXhwNjQgfSks
IFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5p
dF06IC1leHA2NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7CisgICAgc2hvdWxkQmUoZXBvY2gu
YWRkKHsgbmFub3NlY29uZHM6IGV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIDE4NDQ2NzQ0MDcz
NzA5NTUxNjE2bik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IC1leHA2
NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKK30KKworewor
ICAgIC8vIG92ZXJmbG93aW5nIDEyOCBiaXRzCisgICAgWydob3VycycsICdtaW51dGVzJywgJ3Nl
Y29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25kcycsICduYW5vc2Vjb25kcyddLmZv
ckVhY2goKHVuaXQpID0+IHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsg
W3VuaXRdOiBOdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiAtTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFu
Z2VFcnJvcik7CisgICAgfSk7Cit9CisKKy8vIHN1YnRyYWN0KCkKKworeworICAgIHNob3VsZEJl
KGVwb2NoLnN1YnRyYWN0KHsgaG91cnM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTM2MDBfMDAw
XzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IGhvdXJzOiAtMSB9KS5l
cG9jaE5hbm9zZWNvbmRzLCAzNjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2gu
c3VidHJhY3QoeyBtaW51dGVzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC02MF8wMDBfMDAwXzAw
MG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWludXRlczogLTEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFj
dCh7IHNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBuKTsKKyAg
ICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IHNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29u
ZHMsIDFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pbGxp
c2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMs
IDFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRz
OiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1
YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMG4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IDEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTFuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRz
OiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxbik7Cit9CisKK3sKKyAgICAvLyBtYXggZHVyYXRp
b24gdGhhdCBjYW4gYmUgYWRkZWQgdG8gYW55IEluc3RhbnQKKyAgICBzaG91bGRCZShtYXhWYWx1
ZS5zdWJ0cmFjdCh7IGhvdXJzOiA0OF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWlu
VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3Qo
eyBob3VyczogLTQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9j
aE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6
IDI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3Nl
Y29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbWludXRlczogLTI4ODBf
MDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgc2Vjb25kczogMTcyODAwXzAwMDBf
MDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IHNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAw
IH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIC8v
IG5vdGUsIHVuc2FmZSBpbnRlZ2VycyBmcm9tIGhlcmUgb247IHRoZSBtdWx0aXBsaWNhdGlvbiB0
byBjb252ZXJ0CisgICAgLy8gbWlsbGlzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgdG8gbmFub3Nl
Y29uZHMgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlCisgICAgLy8gYmlnaW50IGRvbWFpbi4KKyAg
ICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogMTcyODAwXzAwMDBf
MDAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IC0xNzI4MDBf
MDAwMF8wMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogMTcy
ODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2No
TmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbWljcm9zZWNv
bmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZh
bHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsg
bmFub3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vj
b25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUu
c3VidHJhY3QoeyBuYW5vc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSku
ZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cit9CisKK3sKKyAg
ICAvLyBvdmVyZmxvd2luZyA2NCBiaXRzCisgICAgY29uc3QgZXhwNjQgPSAyICoqIDY0OworICAg
IFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3Nl
Y29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVw
b2NoLnN1YnRyYWN0KHsgW3VuaXRdOiBleHA2NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNo
b3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiAtZXhwNjQgfSksIFJhbmdl
RXJyb3IpOworICAgIH0pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29u
ZHM6IGV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNm4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IC1leHA2NCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNm4pOworfQorCit7CisgICAgLy8gb3Zl
cmZsb3dpbmcgMTI4IGJpdHMKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsICdt
aWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJywgJ25hbm9zZWNvbmRzJ10uZm9yRWFjaCgodW5p
dCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5zdWJ0cmFjdCh7IFt1bml0
XTogTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93
KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiAtTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFu
Z2VFcnJvcik7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggOTYyZDUyNDYyNTI1YWZi
YjI5NmQ5YWNmZDZkOGEwYTE0NGYyMGIzNC4uYWVkNjM0YjE4ZmNhNmZhOTA5NjRjOGU5MTJjN2Fi
NjMyZjNiMzFlNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBi
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjMsNyArMjMsOCBAQCBza2lwOgogICAg
IC0gY2FsbGFibGUtYm91bmRhcnktcmVhbG1zCiAgIHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3Rh
bnQKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9u
ZWREYXRlVGltZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5
cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Ob3cK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQpAQCAtMzQsNyArMzUsOCBAQCBza2lwOgogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvVGltZVpvbmUKICAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL1pvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9DYWxl
bmRhcgotICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvaW50
bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRl
c3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08K
ICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvaW50bDQwMi9UZW1w
b3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGVUaW1l
CkBAIC0yNDcsNiArMjQ5LDcgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0R1cmF0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9zbWFsbGVzdHVuaXQtcGx1cmFscy1hY2NlcHRl
ZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3Rv
dGFsL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3VuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwor
ICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcv
c21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2Zyb20vY2FsZW5kYXItdGVtcG9y
YWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJv
dG90eXBlL2VxdWFscy9jYWxlbmRhci10ZW1wb3JhbC1vYmplY3QuanMKQEAgLTI3Miw2ICsyNzUs
MTMgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3Rv
dHlwZS9zdWJ0cmFjdC9vcmRlci1vZi1vcGVyYXRpb25zLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvZGF0ZXVudGlsLWZpZWxkLmpzCiAK
KyAgICAjIERlcGVuZHMgb24gVGVtcG9yYWwuVGltZVpvbmUKKyAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5h
bm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25k
c2Zvci1vdXQtb2YtcmFuZ2UuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3Rh
bnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLXdy
b25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90
eXBlL3RvU3RyaW5nL3RpbWV6b25lLXN0cmluZy1kYXRldGltZS5qcworICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUuanMKKwog
ICAgICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5ab25lZERhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0
LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS1u
ZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRv
ZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5qcwpAQCAtMjk5LDYgKzMwOSwxMSBAQCBz
a2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3Rv
dGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25k
c2Zvci1ub24taW50ZWdlci5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRp
b24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRv
ZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKICAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRp
bWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itd3JvbmctdHlwZS5qcworICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0
ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvZnJvbS9hcmd1
bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS9lcXVhbHMvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVz
dC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvc2luY2UvYXJndW1lbnQtem9u
ZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90
b3R5cGUvdW50aWwvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcwogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS1uZWdh
dGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Q
bGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNl
dG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdl
dG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcwpAQCAtMzM0LDUgKzM0OSw2IEBA
IHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUv
cm91bmQvYmFsYW5jZS1uZWdhdGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3VuZC9yb3VuZC1uZWdhdGl2ZS1yZXN1bHQuanMK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFj
dC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvaW5zdGFudC1zdHJpbmcuanMKICAgICAtIHRlc3Qv
YnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5cGUvc2luY2UvYmFsYW5jZS1uZWdh
dGl2ZS10aW1lLXVuaXRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRp
bWUvcHJvdG90eXBlL3VudGlsL2JhbGFuY2UtbmVnYXRpdmUtdGltZS11bml0cy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442498</attachid>
            <date>2021-10-26 09:21:49 -0700</date>
            <delta_ts>2021-11-01 14:46:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211026092148.patch</filename>
            <type>text/plain</type>
            <size>139130</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NmE4ZWM2ZDQ0NWQ0MzU1YTQ5YzY0ZmE3Y2MwOTM2OGU1MTg4OTJmLi4wZTQ2Y2Y2MDY0OTRjMzE5
NTBhYmUxMTMzN2FkMzA2OWUwNzc0NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYw
MS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlSW5zdGFudCk6IEFkZCBhIHBhcnNp
bmcgZnVuY3Rpb24gZm9yIEluc3RhbnQgc3RyaW5ncworICAgICAgICAgIHJldXNpbmcgYXMgbXVj
aCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBvdGhlciBwYXJzaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQpOiBTdGF0aWMg
bWV0aG9kIGZvcgorICAgICAgICAgIGNyZWF0aW5nIGZyb20gSVNPIGNhbGVuZGFyIGNvbXBvbmVu
dHMgYW5kIFVUQyBvZmZzZXQuCisgICAgICAgIChKU0M6OklTTzg2MDE6OmNoZWNrZWRDYXN0RG91
YmxlVG9JbnQxMjgpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nCisgICAgICAgICAgd2hl
dGhlciBhIGRvdWJsZSBjYW4gZml0IGludG8gYW4gaW50MTI4IHdpdGhvdXQgb3ZlcmZsb3cuCisg
ICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SVNPODYwMTo6RXhhY3RUaW1lOjpyb3VuZCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4
YWN0VGltZTo6ZGlmZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OkV4YWN0VGltZSk6IEFkZCBhbiBFeGFjdFRpbWUg
dHlwZSB0aGF0IHdyYXBzCisgICAgICAgICAgYW4gSW50MTI4IGFuZCBjYW4gZG8gdGhlIGJhc2lj
IG9wZXJhdGlvbnMuIFRoaXMgdHlwZSBjYW4gYmUgcmV1c2VkIGluCisgICAgICAgICAgVGVtcG9y
YWwuWm9uZWREYXRlVGltZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9t
RXBvY2hTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBv
Y2hNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaE1pY3Jvc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZXBv
Y2hTZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aE1pbGxpc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6
ZXBvY2hNaWNyb3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRp
bWU6OmVwb2NoTmFub3NlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6Om5hbm9zZWNvbmRzRnJhY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpFeGFjdFRpbWU6OmFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1l
OjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPj0g
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6Om9wZXJhdG9yPiBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZSk6IEFkZCBhIG1pbmltYWwKKyAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGFuZGxlRGF0ZVRpbWVWYWx1ZSBhYnN0cmFj
dCBvcCBmcm9tIHRoZQorICAgICAgICAgIFRlbXBvcmFsIHNwZWNpZmljYXRpb24sIG9ubHkgY292
ZXJpbmcgVGVtcG9yYWwuSW5zdGFudC4KKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKTogVXNlIGl0IGluIHRoZSBleGlzdGluZworICAgICAgICAgIEludGwuRGF0ZVRpbWVG
b3JtYXQgbWV0aG9kcy4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZUZyb20pOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0YWtlcyBh
biBJbnQxMjguCisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5oOiBSZW1vdmUgZGVjbGFyYXRp
b24gZm9yIG5vbmV4aXN0ZW50IHRvVWludDY0SGVhcCgpLgorICAgICAgICAqIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHA6IE1vdmUgdGltZVRvTVMoKSBpbnRvIFdURi4KKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0
aW9uKTogQWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bEluc3RhbnQ6OlRlbXBvcmFsSW5zdGFudCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojp0b0luc3RhbnQpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbElu
c3RhbnQ6OmZyb21FcG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6
OmZyb21FcG9jaE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hOYW5vc2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6Y29t
cGFyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW5zdGFudENvbnN0cnVjdG9yKTogQWRkZWQu
CisgICAgICAgIChKU0M6OmZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0KTogQWRkZWQuCisgICAgICAg
IChKU0M6OmFicyk6IEFkZGVkIGZvciBjbGFyaXR5LgorICAgICAgICAoSlNDOjpyb3VuZE51bWJl
clRvSW5jcmVtZW50KTogQWRkIG92ZXJsb2FkIGZvciBJbnQxMjguCisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpeCBzdGFsZSBhc3NlcnRpb24gaW4gSW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlIGFmdGVyIHIyODQ3NTcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjVhNjE5ZTdhNWRi
NTIwNzY4YWFmODkxYmI2OTM2NTI4NTRlYWI0My4uZGM4NzI4MDA0NjM0NThiNmE2NjFiOTdiMjQ0
ODIzYzFmZGU0M2I0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMC0yNSAgUGhpbGlwIENo
aW1lbnRvICA8cGNoaW1lbnRvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50
IFRlbXBvcmFsLkluc3RhbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6IERvbid0IHVzZSBidWlsdGluIG9w
ZXJhdGlvbnMgaWYgX19pbnQxMjggaXMKKyAgICAgICAgICBiZWluZyBlbXVsYXRlZCB1c2luZyBX
VEY6OkludDEyOC4gQWxzbyB3b3JrIGFyb3VuZCBDbGFuZy9MaW51eCBidWcKKyAgICAgICAgICB3
aGVyZSBfX2J1aWx0aW5fbXVsX292ZXJmbG93KCkgZG9lc24ndCB3b3JrIG9uIF9faW50MTI4Lgor
ICAgICAgICAgIFNlZSBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0
CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6OnRpbWVUb01TKTogTW92
ZWQgZnJvbSBKU0RhdGVNYXRoLmguCisKIDIwMjEtMTAtMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBNYWtlIEludDEyOCBvcGVyYXRvciogY29u
c3RleHByCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGI5MTgyY2VkMTAx
OTUxYThkMDA1YjA2YjdlMTdjMTk2MWFkYTA3Ni4uOTJiZjk1NjNiZjlkZjliODNlY2U4NTM0MjVi
Mjk1NzZhMzEyNmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEz
LDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBy
dW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCisg
ICAgcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1w
b3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNWM0N2FmOTlk
NDE3OGIyYzllNjRkMjU1ZThlOTMzYzA4MDEyNDFkNi4uNzY4MTMwYjBiNzAzZWFlMjA1NjE4M2Fi
NjhhNzQzNTZmMjc3ZjgzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsxNzUsOCBAQCAkKFBST0pF
Q1RfRElSKS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVD
VF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Iu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggMTEyMjlkNTdiMmIzYmU4OGYxODBjYzZlODA3MTczNWVlNGNm
YTllYy4uNjVmNDk2ZjI4MmM3MTA3ODk2MDJjNThhNTVmMWZjZTk4ZGJkZDJjNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5k
YXJQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA5YTYzOTIzN2Y4YjI5ZDZjZmU4OGM2Y2JjMjFkNmE5MmM1YjczMzkyLi40
ZWNhZTNmMDU5ODEzOThjYmY2M2E0Njc5ZWU4ZGZjZmViNDY4NmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjAwLDYgKzIwMCw4IEBAIE9CSkVDVF9M
VVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIFwKICAg
ICBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUubHV0LmggXAorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5o
IFwKKyAgICBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsTm93
Lmx1dC5oIFwKICAgICBUZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVj
NTZjMTBlYWEwZTRmMDZhMmUzMGUzYWFiNjQ2YTBmMGRiYjY4YzguLmFhZTEwYmM0YjM2NWZjNjdh
ZWZlNzI3MTYwZDBiNTMzMmUxNTZhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xOTc0LDYgKzE5NzQsMTEgQEAKIAkJRTNGRjc1MzMxRDlDRUExODAwQzdFMTZEIC8qIERPTUpJ
VEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZD
MTJFRjI5NEUwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIyMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjZE
NjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5
IC8qIFRlbXBvcmFsSW5zdGFudC5oICovOyB9OworCQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkg
LyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmggKi87IH07CisJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZENjdENDgyNkY5MTMwQzAwNkUw
MzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUY2RjE1MDIxMjY5M0Q0NTAw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3Jh
bE9iamVjdC5sdXQuaCAqLzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RW
aXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTA0MTU1MjI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTA1RkFGRDFG
RTRDRURBMDAwOTMyMzAgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJENkExMTFGQkQ0OTFEMDAw
MjQ1RjQgLyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CkBAIC01MzcwLDYg
KzUzNzUsMTQgQEAKIAkJRjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdF
eHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJB
ODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pT
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgfTsKKwkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlbXBvcmFsSW5zdGFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Qz
QjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQzI2RjkwMkU3MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE5vdy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxPYmplY3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxQTI2OTNEMzNFMDA0Qjk4
RUYgLyogVGVtcG9yYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMDQsNiAr
NzExNyw4IEBACiAJCQkJOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3RvdHlw
ZS5sdXQuaCAqLywKIAkJCQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxl
bmRhckNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAv
KiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUY2RDY3RDQ1MjZGOTEz
MEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlG
NkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5o
ICovLAogCQkJCUY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQu
aCAqLywKIAkJCQk1MzNCMTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJ
CUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmx1dC5oICovLApAQCAtODA3Myw2ICs4MDg4LDEyIEBACiAJCQkJQTNDN0VEQjQyNkIw
REIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCUEz
QzdFREI1MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcCAq
LywKIAkJCQlBM0M3RURCMDI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZS5oICovLAorCQkJCUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnQuY3BwICovLAorCQkJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3Rh
bnQuaCAqLywKKwkJCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwICovLAorCQkJCUY2RDY3RDNFMjZGOTAy
RTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAx
QjI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5
M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0Uw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCkBAIC0xMDgxNiw2ICsxMDgzNywxMSBA
QAogCQkJCUEzQzdFREI5MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBEQjM4MDA0
QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjZENjdENDAyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRjZENjdENDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAzNDkgLyog
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2
N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5
OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0Uy
NkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZGQ4Y2I2
MjcyNDFiZTg4Y2VlZjA3NDU5Yzg1ZWYzYzhhOWY4YzgzNy4uMmQ1ZmM0ZjM1NGJiZmQ0ZDk5MTRj
YjJhYzIxNzA1MWY0MzFmMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAy
MCw2ICsxMDIwLDkgQEAgcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3IuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCitydW50aW1l
L1RlbXBvcmFsSW5zdGFudC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZW1wb3JhbFBs
YWluVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKaW5k
ZXggNTliMWM3ZWY1YjM5M2QyZGE0OWU0MjY2OTk0NDAzNjY3NjhiOWE1MC4uMGE5N2Q0MDU4M2Nh
OWYxNzA3YzZlYjRiYTY0YjBkYzE1OGJlMGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSVNPODYwMS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKICNpbmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTg3Nyw2ICs4NzksMzcgQEAgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9w
dGlvbmFsPFRpbWUKICAgICB9KTsKIH0KIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNl
SW5zdGFudChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGVtcG9yYWxJbnN0YW50U3RyaW5nCisgICAgLy8gVGVtcG9y
YWxJbnN0YW50U3RyaW5nIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lWm9uZU9mZnNldFJlcXVpcmVk
CisgICAgLy8gICAgIERhdGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMgVGltZVpvbmVPZmZz
ZXRSZXF1aXJlZAorCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNw
cm9kLVRpbWVab25lT2Zmc2V0UmVxdWlyZWQKKyAgICAvLyBUaW1lWm9uZU9mZnNldFJlcXVpcmVk
IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXQgVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0
aW9uX29wdAorCisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtd
KGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4geworICAgICAgICBhdXRv
IGRhdGV0aW1lID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWRhdGV0aW1l
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBbZGF0ZSwg
bWF5YmVUaW1lLCBtYXliZVRpbWVab25lXSA9IGRhdGV0aW1lLnZhbHVlKCk7CisgICAgICAgIGlm
ICghbWF5YmVUaW1lWm9uZSB8fCAoIW1heWJlVGltZVpvbmUtPm1feiAmJiAhbWF5YmVUaW1lWm9u
ZS0+bV9vZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
Ly8gRklYTUU6IHBhcnNlIGNhbGVuZGFyIGFubm90YXRpb24KKyAgICAgICAgaWYgKCFidWZmZXIu
YXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgUGxh
aW5UaW1lIHRpbWU7CisgICAgICAgIGlmIChtYXliZVRpbWUpCisgICAgICAgICAgICB0aW1lID0g
bWF5YmVUaW1lLnZhbHVlKCk7CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBtYXliZVRpbWVa
b25lLT5tX3ogPyAwIDogKm1heWJlVGltZVpvbmUtPm1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
eyBFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIoKSwgZGF0ZS5tb250
aCgpLCBkYXRlLmRheSgpLCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwgdGltZS5zZWNvbmQo
KSwgdGltZS5taWxsaXNlY29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRpbWUubmFub3NlY29u
ZCgpLCBvZmZzZXQpIH07CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWZvcm1hdHRpbWV6b25lb2Zmc2V0c3RyaW5nCiBTdHJp
bmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiB7CkBAIC05Njks
NSArMTAwMiwxMjkgQEAgYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mIGR1cmF0
aW9uKQogICAgIHJldHVybiB0cnVlOwogfQogCitFeGFjdFRpbWUgRXhhY3RUaW1lOjpmcm9tSVNP
UGFydHNBbmRPZmZzZXQoaW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25l
ZCBoLCB1bnNpZ25lZCBtaW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNy
b3MsIHVuc2lnbmVkIG5zLCBpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQoeSA+PSAtOTk5
OTk5ICYmIHkgPD0gOTk5OTk5KTsKKyAgICBBU1NFUlQobW9uID49IDEgJiYgbW9uIDw9IDEyKTsK
KyAgICBBU1NFUlQoZCA+PSAxICYmIGQgPD0gMzEpOworICAgIEFTU0VSVChoIDw9IDIzKTsKKyAg
ICBBU1NFUlQobWluIDw9IDU5KTsKKyAgICBBU1NFUlQocyA8PSA1OSk7CisgICAgQVNTRVJUKG1z
IDw9IDk5OSk7CisgICAgQVNTRVJUKG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA8PSA5
OTkpOworCisgICAgZG91YmxlIGRhdGVEYXlzID0gZGF0ZVRvRGF5c0Zyb20xOTcwKHksIG1vbiAt
IDEsIGQpOworICAgIGRvdWJsZSB0aW1lTXMgPSB0aW1lVG9NUyhoLCBtaW4sIHMsIG1zKTsKKyAg
ICBkb3VibGUgdXRjTXMgPSBkYXRlRGF5cyAqIG1zUGVyRGF5ICsgdGltZU1zOworICAgIEludDEy
OCB1dGNOcyA9IHN0YXRpY19jYXN0PEludDEyOD4odXRjTXMpICogMScwMDAnMDAwICsgbWljcm9z
ICogMTAwMCArIG5zOworICAgIHJldHVybiBFeGFjdFRpbWUgeyB1dGNOcyAtIG9mZnNldCB9Owor
fQorCit1c2luZyBDaGVja2VkSW50MTI4ID0gQ2hlY2tlZDxJbnQxMjgsIFJlY29yZE92ZXJmbG93
PjsKKworc3RhdGljIENoZWNrZWRJbnQxMjggY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkb3Vi
bGUgbikKK3sKKyAgICAvLyBCYXNlZCBvbiBfX2ZpeGRmdGkoKSBhbmQgX19maXh1bnNkZnRpKCkg
ZnJvbSBjb21waWxlcl9ydDoKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXBy
b2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBp
bGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXhpbnRfaW1wbC5pbmMKKyAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2
YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwu
aW5jCisKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzaWduaWZpY2FuZEJpdHMgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmRpZ2l0cyAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgZXhwb25lbnRCaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46OmRpZ2l0cyAt
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzOworICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGV4cG9uZW50QmlhcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2V4
cG9uZW50IC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGltcGxpY2l0Qml0ID0g
dWludDY0X3QgeyAxIH0gPDwgc2lnbmlmaWNhbmRCaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDY0X3Qgc2lnbmlmaWNhbmRNYXNrID0gaW1wbGljaXRCaXQgLSB1aW50NjRfdCB7IDEgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHNpZ25NYXNrID0gdWludDY0X3QgeyAxIH0g
PDwgKHNpZ25pZmljYW5kQml0cyArIGV4cG9uZW50Qml0cyk7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50NjRfdCBhYnNNYXNrID0gc2lnbk1hc2sgLSB1aW50NjRfdCB7IDEgfTsKKworICAgIC8v
IEJyZWFrIG4gaW50byBzaWduLCBleHBvbmVudCwgc2lnbmlmaWNhbmQgcGFydHMuCisgICAgY29u
c3QgdWludDY0X3QgYml0cyA9ICpyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oJm4pOworICAg
IGNvbnN0IHVpbnQ2NF90IG5BYnMgPSBiaXRzICYgYWJzTWFzazsKKyAgICBjb25zdCBpbnQgc2ln
biA9IGJpdHMgJiBzaWduTWFzayA/IC0xIDogMTsKKyAgICBjb25zdCBpbnQgZXhwb25lbnQgPSAo
bkFicyA+PiBzaWduaWZpY2FuZEJpdHMpIC0gZXhwb25lbnRCaWFzOworICAgIGNvbnN0IHVpbnQ2
NF90IHNpZ25pZmljYW5kID0gKG5BYnMgJiBzaWduaWZpY2FuZE1hc2spIHwgaW1wbGljaXRCaXQ7
CisKKyAgICAvLyBJZiBleHBvbmVudCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB6ZXJvLgor
ICAgIGlmIChleHBvbmVudCA8IDApCisgICAgICAgIHJldHVybiB7IDAgfTsKKworICAgIC8vIElm
IHRoZSB2YWx1ZSBpcyB0b28gbGFyZ2UgZm9yIHRoZSBpbnRlZ2VyIHR5cGUsIG92ZXJmbG93Lgor
ICAgIGlmIChleHBvbmVudCA+PSAxMjgpCisgICAgICAgIHJldHVybiB7IFdURjo6UmVzdWx0T3Zl
cmZsb3dlZCB9OworCisgICAgLy8gSWYgMCA8PSBleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cywg
cmlnaHQgc2hpZnQgdG8gZ2V0IHRoZSByZXN1bHQuCisgICAgLy8gT3RoZXJ3aXNlLCBzaGlmdCBs
ZWZ0LgorICAgIEludDEyOCByZXN1bHQgeyBzaWduaWZpY2FuZCB9OworICAgIGlmIChleHBvbmVu
dCA8IHNpZ25pZmljYW5kQml0cykKKyAgICAgICAgcmVzdWx0ID4+PSBzaWduaWZpY2FuZEJpdHMg
LSBleHBvbmVudDsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA8PD0gZXhwb25lbnQgLSBzaWdu
aWZpY2FuZEJpdHM7CisgICAgcmVzdWx0ICo9IHNpZ247CisgICAgcmV0dXJuIHsgcmVzdWx0IH07
Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBk
dXJhdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFT
U0VSVCghZHVyYXRpb24ubW9udGhzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7
CisgICAgQVNTRVJUKCFkdXJhdGlvbi5kYXlzKCkpOworCisgICAgQ2hlY2tlZEludDEyOCByZXN1
bHROcyB7IG1fZXBvY2hOYW5vc2Vjb25kcyB9OworCisgICAgLy8gVGhlIGR1cmF0aW9uJ3MgaG91
cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGFuZCBtaWxsaXNlY29uZHMgc2hvdWxkIGJlCisgICAgLy8g
YWJsZSB0byBiZSBjYXN0IGludG8gYSA2NC1iaXQgaW50LiAyKjFlOCAyNC1ob3VyIGRheXMgaXMg
dGhlIG1heGltdW0KKyAgICAvLyB0aW1lIHNwYW4gZm9yIGV4YWN0IHRpbWUsIHNvIGlmIHdlIGFs
cmVhZHkga25vdyB0aGF0IHRoZSBkdXJhdGlvbiBleGNlZWRzCisgICAgLy8gdGhhdCwgdGhlbiB3
ZSBjYW4gYmFpbCBvdXQuCisKKyAgICBDaGVja2VkSW50MTI4IGhvdXJzID0gY2hlY2tlZENhc3RE
b3VibGVUb0ludDEyOChkdXJhdGlvbi5ob3VycygpKTsKKyAgICByZXN1bHROcyArPSBob3VycyAq
IEV4YWN0VGltZTo6bnNQZXJIb3VyOworICAgIENoZWNrZWRJbnQxMjggbWludXRlcyA9IGNoZWNr
ZWRDYXN0RG91YmxlVG9JbnQxMjgoZHVyYXRpb24ubWludXRlcygpKTsKKyAgICByZXN1bHROcyAr
PSBtaW51dGVzICogRXhhY3RUaW1lOjpuc1Blck1pbnV0ZTsKKyAgICBDaGVja2VkSW50MTI4IHNl
Y29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLnNlY29uZHMoKSk7Cisg
ICAgcmVzdWx0TnMgKz0gc2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgQ2hl
Y2tlZEludDEyOCBtaWxsaXNlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0
aW9uLm1pbGxpc2Vjb25kcygpKTsKKyAgICByZXN1bHROcyArPSBtaWxsaXNlY29uZHMgKiBFeGFj
dFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7CisgICAgQ2hlY2tlZEludDEyOCBtaWNyb3NlY29uZHMg
PSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpKTsKKyAg
ICByZXN1bHROcyArPSBtaWNyb3NlY29uZHMgKiBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7
CisgICAgcmVzdWx0TnMgKz0gY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5uYW5v
c2Vjb25kcygpKTsKKyAgICBpZiAocmVzdWx0TnMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgRXhhY3RUaW1lIHJlc3VsdCB7IHJlc3VsdE5zLnZh
bHVlKCkgfTsKKyAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSW50MTI4IEV4YWN0VGltZTo6cm91
bmQoSW50MTI4IHF1YW50aXR5LCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0
LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKQoreworICAgIEludDEyOCBpbmNyZW1lbnROcyB7
IGluY3JlbWVudCB9OworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpIb3VyOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVySG91cjsgYnJlYWs7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Bl
ck1pbnV0ZTsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogaW5jcmVtZW50
TnMgKj0gRXhhY3RUaW1lOjpuc1BlclNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6Ok1pbGxpc2Vjb25kOiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNv
bmQ7IGJyZWFrOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDogaW5jcmVtZW50
TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pY3Jvc2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBv
cmFsVW5pdDo6TmFub3NlY29uZDogYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiByb3VuZE51bWJlclRvSW5jcmVtZW50
KHF1YW50aXR5LCBpbmNyZW1lbnROcywgcm91bmRpbmdNb2RlKTsKK30KKworLy8gRGlmZmVyZW5j
ZUluc3RhbnQgKCBuczEsIG5zMiwgcm91bmRpbmdJbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91
bmRpbmdNb2RlICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLWRpZmZlcmVuY2VpbnN0YW50CitJbnQxMjggRXhhY3RUaW1lOjpkaWZmZXJlbmNlKEV4
YWN0VGltZSBvdGhlciwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91
bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkgY29uc3QKK3sKKyAgICBJbnQxMjggZGlmZiA9IG90aGVy
Lm1fZXBvY2hOYW5vc2Vjb25kcyAtIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICByZXR1cm4gcm91
bmQoZGlmZiwgaW5jcmVtZW50LCB1bml0LCByb3VuZGluZ01vZGUpOworfQorCitFeGFjdFRpbWUg
RXhhY3RUaW1lOjpyb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBS
b3VuZGluZ01vZGUgcm91bmRpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBFeGFjdFRpbWUg
eyByb3VuZChtX2Vwb2NoTmFub3NlY29uZHMsIGluY3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2Rl
KSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBjNzQyNGFlOTMxZWZlMWI1
MGRjMGFjZDIyYmYyMWI5OTcwOTU2YTZmLi5jMDdlNzdlNDEzM2I5NWY4NjZjZjA3MzA0MmEyNTMz
Mzk0OWIxMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084
NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
bmFtZXNwYWNlIElTTzg2MDEgewpAQCAtNzksNiArODAsMTIyIEBAIHByaXZhdGU6CiAgICAgc3Rk
OjphcnJheTxkb3VibGUsIG51bWJlck9mVGVtcG9yYWxVbml0cz4gbV9kYXRhIHsgfTsKIH07CiAK
K2NsYXNzIEV4YWN0VGltZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoRXhhY3RUaW1l
KTsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgRXhhY3RUaW1lKCkgPSBkZWZhdWx0OworICAgIGNv
bnN0ZXhwciBFeGFjdFRpbWUoY29uc3QgRXhhY3RUaW1lJikgPSBkZWZhdWx0OworICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBFeGFjdFRpbWUoSW50MTI4IGVwb2NoTmFub3NlY29uZHMpIDogbV9lcG9j
aE5hbm9zZWNvbmRzKGVwb2NoTmFub3NlY29uZHMpIHsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBFeGFjdFRpbWUgZnJvbUVwb2NoU2Vjb25kcyhpbnQ2NF90IGVwb2NoU2Vjb25kcykKKyAgICB7
CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hTZWNvbmRzIH0gKiBFeGFj
dFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRp
bWUgZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAg
eworICAgICAgICByZXR1cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoTWlsbGlzZWNvbmRzIH0g
KiBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIEV4YWN0VGltZSBmcm9tRXBvY2hNaWNyb3NlY29uZHMoaW50NjRfdCBlcG9jaE1pY3Jvc2Vj
b25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWNy
b3NlY29uZHMgfSAqIEV4YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7CisgICAgfQorICAgIHN0
YXRpYyBFeGFjdFRpbWUgZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBt
b24sIHVpbnQ4X3QgZCwgdW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNp
Z25lZCBtcywgdW5zaWduZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpOwor
CisgICAgaW50NjRfdCBlcG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2No
TmFub3NlY29uZHMgLyBFeGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgaW50NjRf
dCBlcG9jaE1pbGxpc2Vjb25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vj
b25kcyAvIEV4YWN0VGltZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIGludDY0X3Qg
ZXBvY2hNaWNyb3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQo
KSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29u
ZHMgLyBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIg
SW50MTI4IGVwb2NoTmFub3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
VmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorCisg
ICAgaW50IG5hbm9zZWNvbmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNl
Y29uZCk7CisgICAgfQorCisgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25k
cyA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBh
c1N0cmluZ0ltcGwoYnVpbGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYXNTdHJpbmdJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNW
YWxpZEVwb2NoTmFub3NlY29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5v
c2Vjb25kcworICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1f
ZXBvY2hOYW5vc2Vjb25kcyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRz
OworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIu
bV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFu
b3NlY29uZHMgPT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwor
ICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9l
cG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhh
Y3RUaW1lIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vj
b25kcyA+IG90aGVyLm1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPEV4YWN0VGltZT4gYWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5j
ZShFeGFjdFRpbWUgb3RoZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3Vu
ZGluZ01vZGUpIGNvbnN0OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQs
IFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgY29uc3RleHByIEludDEyOCBkYXlSYW5nZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAv
LyAxZTggZGF5cworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQg
eyAxMDAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7
IDEnMDAwJzAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsg
MScwMDAnMDAwJzAwMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRl
ID0gbnNQZXJTZWNvbmQgKiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1Blckhv
dXIgPSBuc1Blck1pbnV0ZSAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZh
bHVlID0gLWRheVJhbmdlU2Vjb25kcyAqIG5zUGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4
cHIgSW50MTI4IG1heFZhbHVlID0gZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAg
ICBzdGF0aWMgdm9pZCBhc1N0cmluZ0ltcGwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3Ry
aW5nSW1wbChidWlsZGVyLCB2YWx1ZSAvIDEwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlICUgMTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSW50MTI4IHJvdW5kKEludDEyOCBxdWFudGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1w
b3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7CisKKyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRz
IHsgfTsKK307CisKIGNsYXNzIFBsYWluVGltZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoUGxhaW5UaW1lKTsKIHB1YmxpYzoKQEAgLTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9y
YWxUaW1lVG9TdHJpbmcoUGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+
IHByZWNpc2lvbgogCiBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitz
dGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8v
IG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2
M2U5NWJlZjAwNjIwYTMwNmEzYTU1ZjA0YTY1NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNl
NzA4ZDFhMmZmNTg0YjBhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAg
IFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5
KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBzdGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFs
dWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6
IHVpbnQ4X3QgeyBOb25lLCBOYXJyb3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBF
cmEgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xh
c3MgWWVhciA6IHVpbnQ4X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKaW5kZXggNzU4NGNmMGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcx
Y2YzYi4uNmU0ZDYyNWM1MDJmMjBjNDNiZjlkNjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRl
IDx3dGYvRGF0ZU1hdGguaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwogfQogCisvLyBIYW5kbGVEYXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQs
IHggKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
aGFuZGxlZGF0ZXRpbWV2YWx1ZQorZG91YmxlIEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0
ZVRpbWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmpl
Y3QpKTsKKworICAgIC8vIEZJWE1FOgorICAgIC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRl
bXBvcmFsIHR5cGVzCisgICAgLy8gIC0gV29yayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8v
ICAtIFJldHVybiBVRGF0ZUZvcm1hdCBhbmQgVURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcg
b24gdGhlIHR5cGUKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCB4KTsKKyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0
dXJuIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIFdURjo6dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmpl
Y3QpKSk7Cit9CisKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRG
dW5jRm9ybWF0RGF0ZVRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
MTAwLDE0ICsxMjIsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9y
bWF0RnVuY0Zvcm1hdERhdGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBmb3JtYXQgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwotICAgIGRvdWJsZSB2YWx1ZTsKLQotICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHZhbHVlID0gZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVs
c2UgewotICAgICAgICB2YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxP
YmplY3QpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgfQorICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFu
ZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAt
MTU2LDE0ICsxNzIsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGds
b2JhbE9iamVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChk
YXRlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1Bh
cnRzKGdsb2JhbE9iamVjdCwgdmFsdWUpKSk7CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRS
YW5nZSwgKEpTR2xvYmFsT2IKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8
fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVm
aW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9y
bWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUg
PSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0
ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3Qs
IGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAg
ICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0
ZSJfcyk7CkBAIC0yMTIsOSArMjIyLDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBp
ZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUg
c3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBk
b3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVl
KGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6
aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0
ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFl
ZGU1NDMwY2JmMmYyNDFiMi4uNGI1OTZjMjdhNmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUs
NiArNTUsNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2
ICsyMzIsNjIgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBs
KGdsb2JhbE9iamVjdCwgdW5zaWduZWRWYWx1ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0Jp
Z0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAg
IFVJbnQxMjggdW5zaWduZWRWYWx1ZTsKKyAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAo
dmFsdWUgPCAwKSB7CisgICAgICAgIHVuc2lnbmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4
PigtKHZhbHVlICsgMSkpICsgMTsKKyAgICAgICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisg
ICAgICAgIHVuc2lnbmVkVmFsdWUgPSB2YWx1ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9
IFVJTlQ2NF9NQVgpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJv
bUltcGwoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSks
IHNpZ24pKTsKKworICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAg
ICAgIEpTQmlnSW50KiBiaWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAg
IERpZ2l0IGxvd0JpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUpKTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAg
ICAgICBBU1NFUlQoaGlnaEJpdHMpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93
Qml0cyk7CisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBi
aWdJbnQtPnNldFNpZ24oc2lnbik7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisg
ICAgQVNTRVJUKHNpemVvZihEaWdpdCkgPT0gNCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0
aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAg
ICBEaWdpdCBkaWdpdDEgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHVuc2lnbmVkVmFsdWUgPj4gMzIpKTsKKyAgICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBE
aWdpdCBkaWdpdDMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVu
c2lnbmVkVmFsdWUgPj4gOTYpKTsKKworICAgIEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKwor
ICAgIGludCBsZW5ndGggPSBkaWdpdDMgPyA0IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0g
Y3JlYXRlV2l0aExlbmd0aChnbG9iYWxPYmplY3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0
MCk7CisgICAgYmlnSW50LT5zZXREaWdpdCgxLCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGln
aXQoMiwgZGlnaXQyKTsKKyAgICBpZiAoZGlnaXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0
KDMsIGRpZ2l0Myk7CisgICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJ
bnQ7Cit9CisKIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBib29sIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFj
MWQ4ZmI2MTAxYWI2OGQ5NzBmMDJiNzFlZGNiMzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2Fl
MmExODYxMTYzM2I2ZGE2Nzk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgPHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBj
cmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGlu
dDY0X3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3Jl
YXRlRnJvbShKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQx
MjggdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVj
dCosIGJvb2wgdmFsdWUpOwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSB2YWx1ZSk7CiAKQEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChK
U0JpZ0ludCopOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHRvVWludDY0SGVhcChKU0JpZ0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNCaWdJbnQsIG1fZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguY3BwCmluZGV4IGRhZTliM2E5YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJj
ZmYuLjUyMTlmOGY3MjQyYjg2Zjk0MGU4MjgyMzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2
IEBAIExvY2FsVGltZU9mZnNldCBEYXRlQ2FjaGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWls
bGlzZWNvbmRzRnJvbUVwb2NoLCBXVEY6OlRpCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3Rh
dGljIGlubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJs
ZSBzZWMsIGRvdWJsZSBtcykKLXsKLSAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1Bl
ckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJT
ZWNvbmQgKyBtcyk7Ci19Ci0KIGRvdWJsZSBEYXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9N
Uyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpU
aW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogewogICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJv
bTE5NzAodC55ZWFyKCksIHQubW9udGgoKSwgdC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ZWM5MTJjNWQw
OTMwMzBmOTQyMzFiMjhiOTM4ZDEzNTA3Y2FhMjA0Li41Mjg1MWQ1MTE1ZDc5NzlhYWQ1ZWQ4YTU1
YzhjZDA2NDY0ZTdlMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMTAsNiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3Jh
bENhbGVuZGFyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbElu
c3RhbnQuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBv
cmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0
aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAgICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1
Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVj
dHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAg
ICAgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0
YW50OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90
eXBlKSk7CisgICAgICAgICAgICB9KTsKKwogICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5p
bml0TGF0ZXIoCiAgICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYg
aW5pdCkgewogICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMjE2Niw2ICsyMTc1LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNp
dG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9y
KTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwor
ICAgIHRoaXNPYmplY3QtPm1faW5zdGFudFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZTczNjQ0NjMy
ZjVlYzg5ZmM4YmY1ZDYzZmYxMDg2NDZjN2UzMjgwLi5mNjUwYTNkODllZjJhNWUwNWFiY2NhMTkz
ZTZkNTZjNzQyNmNlNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVj
dHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0
YW50U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX3BsYWluVGltZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV90aW1lWm9uZVN0cnVjdHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1
YmxpYzoKIAogICAgIFN0cnVjdHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Nh
bGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1
Y3R1cmUoKSB7IHJldHVybiBtX2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0
cnVjdHVyZSogaW5zdGFudFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fcGxhaW5UaW1lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpv
bmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCmluZGV4IDkzNGJlYjA5YTcwYjc2ZmZhMmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1
NDY2ZDk4ZWZmOWY2NGZkMDk3OWRjOTAwNzQxYmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1
LDMxIEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJh
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxE
dXJhdGlvbkxpa2UsIGRpc2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNP
ODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlv
bihnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmICghaXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9u
IHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6
IGRpc2FsbG93ZWRVbml0cykgeworICAgICAgICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJB
ZGRpbmcgIl9zLCB0ZW1wb3JhbFVuaXRQbHVyYWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1Ymxp
Y05hbWUoKSwgIiBub3Qgc3VwcG9ydGVkIGJ5IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lIGluc3RlYWQiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVy
YXRpb24qIFRlbXBvcmFsRHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVtVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5o
CmluZGV4IDgyZjJkNWQ2NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDlj
ZGRkNzc1YjExNWQxN2QxZTFjZWZjMTQyNzdkNDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVi
bGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0
b1RlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMg
SVNPODYwMTo6RHVyYXRpb24gdG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMp
OwogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiAgICAgc3RhdGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUsIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbEluc3RhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGU5ODE4NWIyZjJmNDc5YzZiMzA0M2U0ZDg3
YTRlNGZiZDFmNGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApAQCAtMCwwICsxLDQ1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2lu
Y2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQmlnSW50LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJN
YXRoQ29tbW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShUZW1wb3JhbEluc3RhbnQpIH07CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50Ojpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9
CisKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBB
U1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0
YW50KHZtLCBzdHJ1Y3R1cmUsIGV4YWN0VGltZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50
ICggZXBvY2hOYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitU
ZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFj
dFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBtYWtlU3RyaW5nKGV4YWN0VGltZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNv
bmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9z
KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUo
dm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVy
ZSgpLCBleGFjdFRpbWUpOworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6
dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
SlNWYWx1ZSBlcG9jaE5hbm9zZWNvbmRzID0gdmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJ
TlQzMikKKyAgICBpZiAoZXBvY2hOYW5vc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAg
aW50MzJfdCB0b3RhbCA9IGVwb2NoTmFub3NlY29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAg
ICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NF
UlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVj
dHVyZSA/IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFj
dFRpbWUpOworICAgIH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJp
Z0ludChlcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsK
KyAgICBJbnQxMjggdG90YWw7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRp
Z2l0KSA9PSA0KSB7CisgICAgICAgIEludDEyOCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8g
YmlnaW50LT5kaWdpdCgwKSA6IDAgfTsKKyAgICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5n
dGgoKSA+IDEgPyBiaWdpbnQtPmRpZ2l0KDEpIDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBi
aWdpbnQtPmxlbmd0aCgpID4gMiA/IGJpZ2ludC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRv
dGFsID0gZDIgPDwgNjQgfCBkMSA8PCAzMiB8IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0g
YmlnaW50LT5sZW5ndGgoKSA+IDM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVv
ZihKU0JpZ0ludDo6RGlnaXQpID09IDgpOworICAgICAgICBJbnQxMjggbG93IHsgYmlnaW50LT5s
ZW5ndGgoKSA+IDAgPyBiaWdpbnQtPmRpZ2l0KDApIDogMCB9OworICAgICAgICBJbnQxMjggaGln
aCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAg
ICAgdG90YWwgPSBoaWdoIDw8IDY0IHwgbG93OworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmln
aW50LT5sZW5ndGgoKSA+IDI7CisgICAgfQorICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRp
bWUgeyB0b3RhbCAqIChiaWdpbnQtPnNpZ24oKSA/IC0xIDogMSkgfTsKKworICAgIGlmIChiaWdJ
bnRUb29Mb25nIHx8ICFleGFjdFRpbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIFN0cmluZyBhcmdB
c1N0cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CisgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7Cisg
ICAgICAgIH0KKworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
bWFrZVN0cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vj
b25kcyBpcyBvdXRzaWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3Rh
bnQiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNy
ZWF0ZSh2bSwgc3RydWN0dXJlID8gc3RydWN0dXJlIDogZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3Ry
dWN0dXJlKCksIGV4YWN0VGltZSk7Cit9CisKKy8vIFRvVGVtcG9yYWxJbnN0YW50ICggaXRlbSAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3Rl
bXBvcmFsaW5zdGFudAorVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbElu
c3RhbnQ+KHZtKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVt
VmFsdWUpOworCisgICAgLy8gRklYTUU6IHdoZW4gVGVtcG9yYWwuWm9uZWREYXRlVGltZSBsYW5k
cworICAgIC8vIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxab25lZERhdGVUaW1lPih2
bSkpCisgICAgLy8gICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsWm9uZWREYXRlVGltZSo+
KGl0ZW1WYWx1ZSktPmVwb2NoVGltZSgpKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKKworICAgIGF1dG8gcGFyc2VkRXhhY3RUaW1lID0gSVNPODYwMTo6cGFy
c2VJbnN0YW50KHN0cmluZyk7CisgICAgaWYgKCFwYXJzZWRFeGFjdFRpbWUpIHsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIiciX3MsIGVs
bGlwc2l6ZUF0KDEwMCwgc3RyaW5nKSwgIicgaXMgbm90IGEgdmFsaWQgVGVtcG9yYWwuSW5zdGFu
dCBzdHJpbmciX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgcGFy
c2VkRXhhY3RUaW1lLnZhbHVlKCkpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tICgg
aXRlbSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC5pbnN0YW50LmZyb20KK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8
VGVtcG9yYWxJbnN0YW50Pih2bSkpIHsKKyAgICAgICAgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0
VGltZSA9IGpzQ2FzdDxUZW1wb3JhbEluc3RhbnQqPihpdGVtVmFsdWUpLT5leGFjdFRpbWUoKTsK
KyAgICAgICAgcmV0dXJuIFRlbXBvcmFsSW5zdGFudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
Pmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9J
bnN0YW50KGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzICggZXBvY2hTZWNvbmRzICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLmluc3RhbnQuZnJvbWVwb2Noc2Vjb25kcwor
VGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaFNlY29uZHNWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIGVwb2NoU2Vjb25kcyA9IGVwb2NoU2Vjb25k
c1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBOdW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAo
IWlzSW50ZWdlcihlcG9jaFNlY29uZHMpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVwb2NoU2Vjb25kcywgIiBpcyBub3QgYSB2YWxp
ZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084
NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaFNlY29uZHMoZXBvY2hTZWNvbmRzKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFj
dFRpbWUpKTsKK30KKworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMg
KCBlcG9jaE1pbGxpc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50LmZyb21lcG9jaG1pbGxpc2Vjb25kcworVGVtcG9yYWxJ
bnN0YW50KiBUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGVwb2NoTWlsbGlzZWNvbmRzVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaE1pbGxpc2Vjb25kcyA9IGVwb2No
TWlsbGlzZWNvbmRzVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIC8vIE51bWJlclRvQmlnSW50IHN0ZXAg
MQorICAgIGlmICghaXNJbnRlZ2VyKGVwb2NoTWlsbGlzZWNvbmRzKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaE1pbGxpc2Vj
b25kcywgIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBlcG9jaCBtaWxsaXNlY29u
ZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgSVNPODYwMTo6
RXhhY3RUaW1lIGV4YWN0VGltZSA9IElTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWlsbGlz
ZWNvbmRzKGVwb2NoTWlsbGlzZWNvbmRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBleGFjdFRpbWUpKTsKK30KKworLy8gVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMgKCBlcG9jaE1pY3Jvc2Vjb25kcyAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0
YW50LmZyb21lcG9jaG1pY3Jvc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgZXBvY2hNaWNyb3NlY29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlLnRv
QmlnSW50KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGVwb2NoTWljcm9zZWNvbmRzLmlz
QmlnSW50MzIoKSkgeworICAgICAgICBpbnQzMl90IG1pY3Jvc2Vjb25kcyA9IGVwb2NoTWljcm9z
ZWNvbmRzLmJpZ0ludDMyQXNJbnQzMigpOworICAgICAgICBhdXRvIGV4YWN0VGltZSA9IElTTzg2
MDE6OkV4YWN0VGltZTo6ZnJvbUVwb2NoTWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kcyk7CisgICAg
ICAgIEFTU0VSVChleGFjdFRpbWUuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAgfQor
I2VuZGlmCisKKyAgICBKU0JpZ0ludCogYmlnaW50ID0gYXNIZWFwQmlnSW50KGVwb2NoTWljcm9z
ZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmc7CisgICAgaWYgY29uc3RleHByIChzaXpl
b2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KQorICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50
LT5sZW5ndGgoKSA+IDI7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChzaXplb2YoSlNCaWdJ
bnQ6OkRpZ2l0KSA9PSA4KTsKKyAgICAgICAgYmlnSW50VG9vTG9uZyA9IGJpZ2ludC0+bGVuZ3Ro
KCkgPiAxOworICAgIH0KKyAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kcyA9IEpTQmlnSW50Ojp0b0Jp
Z0ludDY0KGJpZ2ludCk7CisgICAgYXV0byBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6
OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOworCisgICAgaWYgKGJpZ0ludFRv
b0xvbmcgfHwgIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGFyZ0FzU3Ry
aW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAgaWYgKHNj
b3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwor
ICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAg
ICAgfQorCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtl
U3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJnQXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jvc2Vjb25k
cyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30KKworLy8g
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3NlY29uZHMg
KQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5z
dGFudC5mcm9tZXBvY2huYW5vc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3JhbEluc3Rh
bnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKQoreworICAgIHJldHVybiB0cnlDcmVhdGVJZlZh
bGlkKGdsb2JhbE9iamVjdCwgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKTsKK30KKworLy8gVGVtcG9y
YWwuSW5zdGFudC5jb21wYXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1ZhbHVlIFRlbXBv
cmFsSW5zdGFudDo6Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG9uZVZhbHVlLCBKU1ZhbHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBUZW1wb3JhbEluc3RhbnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIG9uZVZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxJ
bnN0YW50KiB0d28gPSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmV4YWN0VGltZSgp
ID4gdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOworICAgIGlm
IChvbmUtPmV4YWN0VGltZSgpIDwgdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpz
TnVtYmVyKC0xKTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6OkR1cmF0
aW9uIFRlbXBvcmFsSW5zdGFudDo6ZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZW1wb3JhbEluc3RhbnQqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0
T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNt
YWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21h
bGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFRlbXBvcmFs
VW5pdCBkZWZhdWx0TGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRlbXBvcmFs
VW5pdDo6U2Vjb25kKTsKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGds
b2JhbE9iamVjdCwgb3B0aW9ucywgeyB9LCBkZWZhdWx0TGFyZ2VzdFVuaXQpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0
ID0gbGFyZ2VzdC52YWx1ZV9vcihkZWZhdWx0TGFyZ2VzdFVuaXQpOworCisgICAgaWYgKHNtYWxs
ZXN0ICYmIGxhcmdlc3QgJiYgc21hbGxlc3QgPCBsYXJnZXN0KSB7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxl
ciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heEluY3Jl
bWVudCA9IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpOworICAgIEFTU0VS
VChtYXhJbmNyZW1lbnQgJiYgKm1heEluY3JlbWVudCA8PSAxMDAwKTsgLy8gdW5ib3VuZGVkIGlu
Y3JlbWVudHMgYXJlIGltcG9zc2libGUgd2l0aCBUZW1wb3JhbC5JbnN0YW50CisgICAgdW5zaWdu
ZWQgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIG1heEluY3JlbWVudCwgZmFsc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBJbnQxMjggcm91bmRlZERpZmYgPSBleGFjdFRpbWUoKS5kaWZmZXJl
bmNlKG90aGVyLT5leGFjdFRpbWUoKSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5n
TW9kZSk7CisgICAgLy8gTk9URTogRHVyYXRpb24gZmllbGRzIGFyZSBjdXJyZW50bHkgZG91Ymxl
cywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YKKyAgICAvLyBuYW5vc2Vjb25kcyBtYXkgbm90IGZp
dCBpbiBhIGRvdWJsZS4gVGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UgaWYgdGhlCisgICAgLy8gaW50
ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHVyYXRpb24gY2hhbmdlcy4KKyAgICBBU1NFUlQocm91
bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwIDwgSU5UNjRfTUFYKTsKKyAgICBkb3VibGUgc2Vjb25k
cyB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRlZERpZmYg
LyAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBkb3VibGUgbmFub3NlY29uZHNSZW1haW5kZXIgeyBz
dGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJvdW5kZWREaWZmICUgMScw
MDAnMDAwJzAwMCkpIH07CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0IHsgMCwgMCwgMCwg
MCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5kZXIgfTsKKworICAgIFRl
bXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBvcmFsVW5p
dCBzbWFsbGVzdFVuaXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsKKyAgICBjYXNl
IFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpN
aW51dGU6IHJldHVybiAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHJldHVy
biA4NjQwMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVybiA4LjY0
ZTc7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42NGUxMDsK
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRlMTM7CisgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1vbnRoOgor
ICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6
CisgICAgZGVmYXVsdDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK0lTTzg2MDE6OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJv
dW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBj
b25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGlu
dGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBv
cmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6Olll
YXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0
OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
ICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0g
c21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFJvdW5k
aW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5k
aW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bUluY3JlbWVudChzbWFs
bGVzdFVuaXQpLCB0cnVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIGV4YWN0VGltZSgpLnJvdW5kKGluY3JlbWVudCwgc21hbGxlc3RVbml0LCBy
b3VuZGluZ01vZGUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmlu
ZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbElu
c3RhbnQ6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRp
b25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIEpTT2JqZWN0KiB0aW1lWm9u
ZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB0aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+Z2V0KGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgdGltZVpvbmUgPSBUZW1wb3JhbFRpbWVab25lOjpmcm9tKGdsb2JhbE9i
amVjdCwgdGltZVpvbmVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisgICAgfQorCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1By
ZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxS
b3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0
byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgor
ICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYm
IHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9T
dHJpbmcodGltZVpvbmUpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSB7
IGV4YWN0VGltZSgpLnJvdW5kKGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9k
ZSkgfTsKKworICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6CisgICAg
Ly8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJlICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50KHJvdW5k
ZWROcykuCisgICAgLy8gLi4uCisgICAgLy8gMS4gSWYgX291dHB1dFRpbWVab25lXyBpcyAqdW5k
ZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4gU2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8gISBDcmVh
dGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiopLgorICAgIC8vIDEuIExldCBfaXNvQ2FsZW5kYXJf
IGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCkuCisgICAgLy8gMS4gTGV0IF9kYXRlVGltZV8gYmUg
PyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRhdGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9uZV8sIF9p
bnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisgICAgSlNPYmplY3QqIG91dHB1dFRpbWVab25lID0g
dGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRpbWVab25lKSB7CisgICAgICAgIHRocm93Vk1FcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6IFRlbXBvcmFsLkluc3RhbnQudG9TdHJpbmco
e3RpbWVab25lfSkgbm90IGltcGxlbWVudGVkIHlldCJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nKG5ld0V4YWN0VGltZSwgdGltZVpvbmUsIGRh
dGEpOworfQorCisvLyBUZW1wb3JhbEluc3RhbnRUb1N0cmluZyAoIGluc3RhbnQsIHRpbWVab25l
LCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbEluc3RhbnQ6
OnRvU3RyaW5nKElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9u
ZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3Jl
Z29yaWFuRGF0ZVRpbWUgeyBzdGF0aWNfY2FzdDxkb3VibGU+KGV4YWN0VGltZS5lcG9jaE1pbGxp
c2Vjb25kcygpKSwgTG9jYWxUaW1lT2Zmc2V0IHsgfSB9OworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKworICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiAxMDAw
IGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvCisgICAgLy8gdXNlIHRoZSBleHRlbmRlZCB5
ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisgICAgdW5zaWduZWQgeWVhckxlbmd0aCA9IDQ7Cisg
ICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFuRGF0ZVRp
bWUueWVhcigpIDwgMTAwMCkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChncmVnb3JpYW5EYXRl
VGltZS55ZWFyKCkgPCAwID8gJy0nIDogJysnKTsKKyAgICAgICAgeWVhckxlbmd0aCA9IDY7Cisg
ICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFyTGVuZ3Ro
LCBzdGQ6OmFicyhncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkpKSwKKyAgICAgICAgJy0nLCBwYWQo
JzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5tb250aCgpICsgMSksCisgICAgICAgICctJywgcGFk
KCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSksCisgICAgICAgICdUJywgcGFk
KCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUuaG91cigpKSwKKyAgICAgICAgJzonLCBwYWQoJzAn
LCAyLCBncmVnb3JpYW5EYXRlVGltZS5taW51dGUoKSkpKTsKKworICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIGludCBmcmFjdGlvbiB7
IGV4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rpb24gPCAw
KQorICAgICAgICBmcmFjdGlvbiArPSBuc1BlclNlY29uZDsKKworICAgIGZvcm1hdFNlY29uZHNT
dHJpbmdQYXJ0KGJ1aWxkZXIsIGdyZWdvcmlhbkRhdGVUaW1lLnNlY29uZCgpLCBmcmFjdGlvbiwg
cHJlY2lzaW9uKTsKKworICAgIGlmICh0aW1lWm9uZSkgeworICAgICAgICAvLyBGSVhNRTogTWlz
c2luZywgcmVsaWVzIG9uIFRpbWVab25lOgorICAgICAgICAvLyAgIDEuIExldCBfdGltZVpvbmVT
dHJpbmdfIGJlID8gQnVpbHRpblRpbWVab25lR2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1lWm9uZV8s
IF9pbnN0YW50XykuCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisgICAgfSBlbHNlCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5MzdjN2Vm
YTNhZDQwNTZjMzliYTEyNmEzOWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFRlbXBvcmFsSW5zdGFudCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZt
LnRlbXBvcmFsSW5zdGFudFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBv
cmFsSW5zdGFudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RXhhY3RUaW1lKTsK
KyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2Jq
ZWN0KiwgSVNPODYwMTo6RXhhY3RUaW1lLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUsIFN0cnVjdHVyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdG9JbnN0YW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJvbShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQqIGZyb21F
cG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9y
YWxJbnN0YW50KiBmcm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9t
RXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBK
U1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKworICAg
IElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2V4YWN0VGlt
ZS5nZXQoKTsgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZShKU0dsb2JhbE9i
amVjdCosIFRlbXBvcmFsSW5zdGFudCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNP
ODYwMTo6RXhhY3RUaW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBj
b25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlv
bnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCogdGltZVpvbmUgPSBudWxs
cHRyLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwg
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gdG9TdHJpbmcoZXhhY3RUaW1lKCksIHRpbWVab25lLCBwcmVjaXNpb24pOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpF
eGFjdFRpbWUpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBhcnNlKFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RXhhY3RUaW1l
IGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhJU084NjAxOjpFeGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9uZSwgUHJl
Y2lzaW9uRGF0YSk7CisKKyAgICBQYWNrZWQ8SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4YWN0VGlt
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJhYTQyODBhMWNlNjcwOTBhNjc4MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpOworCitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNG
cm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWlsbGlzZWNv
bmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hOYW5v
c2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgJnRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpIH07CisKKy8qIFNv
dXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgICAgICAgdGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgIGZyb21FcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZy
b21FcG9jaE1pbGxpc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVw
b2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1pY3Jvc2Vj
b25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9zZWNvbmRz
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3JGdW5jQ29tcGFyZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisq
LworCitUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNv
bnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFudFByb3RvdHlwZSk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihjYWxsVGVtcG9yYWxJbnN0YW50KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCk7CisKK1RlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0YW50LCBj
b25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
KiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAi
SW5zdGFudCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBpbnN0YW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgaW5zdGFudFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJV
Q1RVUkUodm0sIGluc3RhbnRTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxl
ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vj
b25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRl
SWZWYWxpZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIHN0
cnVjdHVyZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbElu
c3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnN0YW50IikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsSW5zdGFudDo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yRnVuY0Zyb21FcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1w
b3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25k
cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
K3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbUVwb2No
TWljcm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoTmFub3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsSW5zdGFudDo6Y29tcGFyZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNkZWRlMmEy
MTg5NWE4ZjJmNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1
bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZDk4Y2FiYjIwMDU0NWJkNDdhNTQyMmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcApAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJp
bmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWls
bGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTmFub3Nl
Y29uZHMpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJhc2U6OnNfaW5mbywgJmlu
c3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAg
ICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
dW50aWwgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRpbCAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAgICAgICAgICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICByb3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVu
Y1JvdW5kICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAg
ICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0
b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTiAgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAgIHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
VmFsdWVPZiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlcG9jaFNlY29uZHMg
ICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAgICAgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWlsbGlzZWNvbmRzICB0ZW1w
b3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVudW18UmVh
ZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
R2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKHZtLCBzdHJ1Y3R1
cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBwcm90
b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChp
bmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0aWFsaXplcl9saXN0PFRl
bXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7CisgICAgVGVtcG9yYWxVbml0
OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9yYWxVbml0OjpXZWVr
LAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAorfTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIElu
c3RhbnQiX3MpOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1
cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5l
d0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZChkdXJhdGlvbik7CisgICAgaWYg
KCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9y
YWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlD
cmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2MDE6OkR1
cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRpb25Vbml0
cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0ZDo6b3B0
aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5leGFjdFRp
bWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91dHNp
ZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0
LCAqbmV3RXhhY3RUaW1lKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBU
ZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6
dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0ID0gaW5z
dGFudC0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1
Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJ
bnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJ
bnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBvcHRp
b25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlvbiByZXN1
bHQgPSBvdGhlci0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlvbnMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJh
dGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOwor
CisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGds
b2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNF
cXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFu
dCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFs
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgVGVtcG9y
YWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGluc3RhbnQt
PmV4YWN0VGltZSgpID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1wb3JhbC5J
bnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9z
dHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
aW5zdGFudC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGlu
c3RhbnQtPnRvU3RyaW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRlciBhcyBh
IEpTQnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBv
cmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfcyk7CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9IEludGxE
YXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBm
b3JtYXR0ZXItPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxEYXRlVGlt
ZUZvcm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgaW5z
dGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4g
VG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJf
cyk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWlu
c3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKK30KKwor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVw
b2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFpbnN0YW50
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0
dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIWlu
c3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJ
bnQzMihnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9zZWNvbmRz
KCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
aWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xv
YmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGRkZmIx
NDY5ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGZmMGJjZmRjZjgyZDIyMWQxZWNi
ODVhOGMxYjQ2YjY1MWI0ZGI3MzUuLjg5NDZhMGNjNjEwNDg0Zjg4MjRmNWNmZGU3Y2Y0YjczOTg1
YzlkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9i
amVjdC5jcHAKQEAgLTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1
cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVP
YmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3Jh
bE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwor
ICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90
eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29uc3Ry
dWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0
ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC04OSw2
ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFibGUKICAg
Q2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQ
cm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0
b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAgICBjcmVh
dGVJbnN0YW50Q29uc3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAg
Tm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQ
cm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVj
dG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVh
dGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKQEAg
LTM3NCw2ICszODUsMTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24oU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9CiAKKy8v
IEZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNv
bmQsIG5hbm9zZWNvbmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9pZCBmb3Jt
YXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCBzZWNv
bmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sKKyAgICBp
ZiAocHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7CisgICAg
Zm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVjaXNpb24u
cHJlY2lzaW9uKTsKK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3Jl
bWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAogc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQgdW5p
dCkKQEAgLTQzNSw2ICs0NTcsNDMgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91
YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEyOCB4KQor
eworICAgIHJldHVybiB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92ZSwgYnV0
IHdpdGggSW50MTI4CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjggeCwgSW50
MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgaWYgKGluY3JlbWVudCA9
PSAxKQorICAgICAgICByZXR1cm4geDsKKworICAgIEludDEyOCBxdW90aWVudCA9IHggLyBpbmNy
ZW1lbnQ7CisgICAgSW50MTI4IHJlbWFpbmRlciA9IHggJSBpbmNyZW1lbnQ7CisgICAgaWYgKCFy
ZW1haW5kZXIpCisgICAgICAgIHJldHVybiB4OworCisgICAgYm9vbCBzaWduID0gcmVtYWluZGVy
IDwgMDsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q2VpbDoK
KyAgICAgICAgaWYgKCFzaWduKQorICAgICAgICAgICAgcXVvdGllbnQrKzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkZsb29yOgorICAgICAgICBpZiAoc2lnbikKKyAg
ICAgICAgICAgIHF1b3RpZW50LS07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm91bmRpbmdN
b2RlOjpUcnVuYzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQ6CisgICAgICAgIC8vICJoYWxmIHVwIGF3YXkgZnJvbSB6ZXJvIgorICAgICAgICBpZiAo
YWJzKHJlbWFpbmRlciAqIDIpID49IGluY3JlbWVudCkKKyAgICAgICAgICAgIHF1b3RpZW50ICs9
IHNpZ24gPyAtMSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcXVvdGll
bnQgKiBpbmNyZW1lbnQ7Cit9CisKIFRlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQogewogICAg
IHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggNzkxNTc5OGNk
Yjk4YWI3NDU4M2I4YzhhYzM2YTU1ZDFiNDVmMWMxNC4uYWIzYjI5MzNmNTNhOGNhNmQ2NjFkMjZm
NmQ3MTliNzc5YzJkNjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE9iamVjdC5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0ludDEyOC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtMTA1LDkgKzEwNiwxMSBAQCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0
ZW1wb3JhbEZyYWN0aW9uYWxTZWNvbmREaWdpdHMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdAog
UHJlY2lzaW9uRGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIG9wdGlvbnMpOwogUm91bmRpbmdNb2RlIHRlbXBvcmFsUm91bmRpbmdNb2RlKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqLCBSb3VuZGluZ01vZGUpOwogdm9pZCBmb3JtYXRTZWNvbmRz
U3RyaW5nRnJhY3Rpb24oU3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIGZyYWN0aW9uLCBzdGQ6OnR1
cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+KTsKK3ZvaWQgZm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQo
U3RyaW5nQnVpbGRlciYsIHVuc2lnbmVkIHNlY29uZCwgdW5zaWduZWQgZnJhY3Rpb24sIFByZWNp
c2lvbkRhdGEpOwogc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVu
dChUZW1wb3JhbFVuaXQpOwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlk
ZW5kLCBib29sIGluY2x1c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3Vi
bGUsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CitJbnQxMjggcm91bmROdW1iZXJU
b0luY3JlbWVudChJbnQxMjgsIEludDEyOCBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKIGVu
dW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6IGJvb2wgewogICAgIENvbnN0cmFpbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyZmFjNzM0MzU0ODllYjcwZDRkOTZlOGQy
OWIzNGJkM2I2OGRiOGNmLi45Y2Y1ZmVhMDE5ODQ5ZGI2ZTY2MDkxMGJiOTQ1MWNkMjdjMjVmYmM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAK
ICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFu
dC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxU
aW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgpAQCAtMTU5Nyw2ICsxNTk4
LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVj
dFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgVGVtcG9yYWxJbnN0YW50KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlbXBvcmFsUGxhaW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9y
YWxUaW1lWm9uZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50
OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGJkZjQzMWU4NGVmMDk0ODU2YmMwMjczMGM0MGZm
ZTZlZGFhNWMxZDYuLjZmZTQ2NzQwNWJiYjQ3NGVjMjIzZDY5YjQ4MWIxOGQ2ZjBhZDNkOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTg3LDYgKzE4Nyw3IEBAIGNsYXNzIFJl
Z0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOwogY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKK2Ns
YXNzIFRlbXBvcmFsSW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CkBAIC02MDEs
NiArNjAyLDcgQEAgcHVibGljOgogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25l
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5
U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIGIv
U291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCBlZmFiNGFkM2JjOWY3MGQ2
N2ViNjIzZDA3MzE2MTA5Mjk5OGQzZTM0Li45YzFhNWZjNzQyNDE4NWRkMjk3YTAxYmVkYmZjYTAy
Y2JlZjE5NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTI5MSwxMiArMjkx
LDE4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVz
dWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgc3RhdGljIGlubGluZSBib29sIGFk
ZChMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVS
TgogICAgIHsKICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgUmVzdWx0VHlw
ZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRl
bXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAg
IGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2Yo
UkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFJlc3VsdFR5
cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhz
LCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVz
dWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9U
KQorICAgICAgICB9CisjZW5kaWYKKyNlbmRpZgogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMs
IHJocykpIHsKICAgICAgICAgICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlm
ICgoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLSByaHMpIDwgbGhzKQpA
QCAtMzA5LDE4ICszMTUsMjMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhT
LCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAgICAgfSAv
LyBpZiB0aGUgc2lnbnMgZG8gbm90IG1hdGNoIHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93
CiAgICAgICAgIHJlc3VsdCA9IGxocyArIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5k
aWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMs
IFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIENPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlm
IChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotI2Vsc2UKKyNpZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXpl
b2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMpIDw9IHNpemVvZih1aW50
NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOworICAgICAgICAg
ICAgaWYgKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRp
ZgorI2VuZGlmCiAgICAgICAgIGlmICghc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAg
ICAgIGlmIChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSArIHJocykKQEAgLTMzMiwxOCArMzQzLDI2IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlw
ZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgICAgIH0gLy8gaWYgdGhlIHNpZ25zIG1hdGNo
IHRoaXMgb3BlcmF0aW9uIGNhbid0IG92ZXJmbG93CiAgICAgICAgIHJlc3VsdCA9IGxocyAtIHJo
czsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbXVsdGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBX
QVJOX1VOVVNFRF9SRVRVUk4KICAgICB7CiAjaWYgVVNFKE1VTF9PVkVSRkxPVykKLSAgICAgICAg
UmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMs
IHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQg
PSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisgICAgICAgIC8vIERvbid0IHVz
ZSB0aGUgYnVpbHRpbiBpZiB0aGUgaW50MTI4IHR5cGUgaXMgV1RGOjpbVV1JbnQxMjhJbXBsLgor
ICAgICAgICAvLyBBbHNvIGRvbid0IHVzZSB0aGUgYnVpbHRpbiBmb3IgX19bdV1pbnQxMjhfdCBv
biBDbGFuZy9MaW51eC4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MDQKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5H
KSAmJiBPUyhMSU5VWCkpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6
ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5k
aWYKKyAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0
aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2lmICFIQVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVY
KSkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKHNpZ25zTWF0Y2gobGhz
LCByaHMpKSB7CiAgICAgICAgICAgICBpZiAobGhzID49IDApIHsKICAgICAgICAgICAgICAgICBp
ZiAobGhzICYmIChzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSAvIGxocykg
PCByaHMpCkBAIC0zNjUsNyArMzg0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5h
bWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAg
ICAgfQogICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7CiAgICAgICAgIHJldHVybiB0cnVlOwot
I2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIGRpdmlkZShMSFMgbGhzLCBS
SFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgpAQCAtMzg1LDQ3
ICs0MDMsNjYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIKICAgICAvLyBMSFMgYW5kIFJIUyBh
cmUgdW5zaWduZWQgdHlwZXMgc28gYm91bmRzIGNoZWNrcyBhcmUgbmljZSBhbmQgZWFzeQogICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBhZGQoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVz
dWx0KSBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCiAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9hZGRf
b3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAg
ICBSZXN1bHRUeXBlIHRlbXAgPSBsaHMgKyByaHM7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExI
UykgPD0gc2l6ZW9mKHVpbnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3Qp
KSB7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KGxocywg
cmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEy
OF9UKQorICAgICAgICB9CisjZW5kaWYKKyNlbmRpZgorICAgICAgICB0ZW1wID0gbGhzICsgcmhz
OwogICAgICAgICBpZiAodGVtcCA8IGxocykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmVzdWx0ID0gdGVtcDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9
CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3ViKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5
cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotI2lmIENPTVBJTEVSKEdDQ19D
T01QQVRJQkxFKQogICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1aWx0
aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UK
LSAgICAgICAgUmVzdWx0VHlwZSB0ZW1wID0gbGhzIC0gcmhzOworI2lmIENPTVBJTEVSKEdDQ19D
T01QQVRJQkxFKQorI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNp
emVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVp
bnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVyZmxv
dyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFW
RShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICAgICAgdGVtcCA9IGxo
cyAtIHJoczsKICAgICAgICAgaWYgKHRlbXAgPiBsaHMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHJlc3VsdCA9IHRlbXA7CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CiAgICAgfQogCiAgICAgc3RhdGljIGlubGluZSBib29sIG11bHRpcGx5KExIUyBsaHMsIFJIUyBy
aHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIFVT
RShNVUxfT1ZFUkZMT1cpCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9f
YnVpbHRpbl9tdWxfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0j
ZWxzZQorICAgICAgICAvLyBEb24ndCB1c2UgdGhlIGJ1aWx0aW4gaWYgdGhlIGludDEyOCB0eXBl
IGlzIFdURjo6SW50MTI4SW1wbC4KKyAgICAgICAgLy8gQWxzbyBkb24ndCB1c2UgdGhlIGJ1aWx0
aW4gZm9yIF9faW50MTI4X3Qgb24gQ2xhbmcvTGludXguCisgICAgICAgIC8vIFNlZSBodHRwczov
L2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA0CisjaWYgIUhBVkUoSU5UMTI4X1Qp
IHx8IChDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICBpZiBjb25zdGV4cHIg
KHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRfdCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9m
KHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAgICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAg
ICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVS
KENMQU5HKSAmJiBPUyhMSU5VWCkpCisgICAgICAgIH0KKyNlbmRpZgorI2VuZGlmCiAgICAgICAg
IGlmICghbGhzIHx8ICFyaHMpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTQzNCw3ICs0NzEsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhT
LCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3Bl
cgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSBsaHMgKiByaHM7
CiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGlubGlu
ZSBib29sIGRpdmlkZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5f
VU5VU0VEX1JFVFVSTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCBiL1Nv
dXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKaW5kZXggZGUwYjQ1YmQwYTg4ZWFiYTQ2NmI2ZTZjMGFk
NjZkYzAyZjUyNTc0MS4uN2JiMjdlOTk3NmZiMTRlMDZmYTRlZTQ4NTUzNjE3ZmNhMDZkOGQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oCkBAIC0zODgsNiArMzg4LDExIEBAIGlubGluZSBpbnQgZGF5SW5Nb250aEZy
b21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikKICAgICByZXR1cm4gZCAt
IHN0ZXA7CiB9CiAKK2lubGluZSBkb3VibGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBt
aW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBtcykKK3sKKyAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6
bWludXRlc1BlckhvdXIgKyBtaW4pICogV1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdU
Rjo6bXNQZXJTZWNvbmQgKyBtcyk7Cit9CisKIC8vIFJldHVybnMgY29tYmluZWQgb2Zmc2V0IGlu
IG1pbGxpc2Vjb25kIChVVEMgKyBEU1QpLgogV1RGX0VYUE9SVF9QUklWQVRFIExvY2FsVGltZU9m
ZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQoZG91YmxlIHV0Y0luTWlsbGlzZWNvbmRzLCBU
aW1lVHlwZSA9IFVUQ1RpbWUpOwogCkBAIC00MTAsNiArNDE1LDcgQEAgdXNpbmcgV1RGOjptc1Rv
SG91cnM7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJEYXk7CiB1c2luZyBXVEY6OnNlY29uZHNQZXJN
aW51dGU7CiB1c2luZyBXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnM7
Cit1c2luZyBXVEY6OnRpbWVUb01TOwogdXNpbmcgV1RGOjptYWtlUkZDMjgyMkRhdGVTdHJpbmc7
CiB1c2luZyBXVEY6OkxvY2FsVGltZU9mZnNldDsKIHVzaW5nIFdURjo6Y2FsY3VsYXRlTG9jYWxU
aW1lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA5NjExYTNjZDcwYTMxZjM1Y2VkNGJlN2NjMmFkNjBhNDk1YTZiNjgxLi43NDZj
MmE1ODI0NjNlYmY1NjMxNTQ2MmU1MTIxMDMwYmU1NTgyYTYzIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIx
LTEwLTI1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuSW5zdGFudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChpbnN0YW50cy5mb3JFYWNoKToKKyAgICAgICAg
KHNob3VsZFRocm93Lm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKGNvbnN0Lm1heFZh
bHVlLm5ldy5UZW1wb3JhbC5JbnN0YW50KToKKyAgICAgICAgKHNob3VsZEJlLmVwb2NoLnN1YnRy
YWN0KToKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOiBObyBuZWVkIHRvIGlnbm9yZSBh
bGwgVGVtcG9yYWwuSW5zdGFudCB0ZXN0cworICAgICAgICAgIGFueW1vcmUsIG9ubHkgdGhlIG9u
ZXMgZm9yIHRoZSB1bmltcGxlbWVudGVkIG1ldGhvZHMuCisKIDIwMjEtMTAtMjUgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBEb24ndCBicmFuY2gg
YXJvdW5kIHJlZ2lzdGVyIGFsbG9jYXRpb24gaW4gREZHIGVudW1lcmF0b3IgZ2V0IGJ5IHZhbApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtaW5zdGFudC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThiN2E1YjZjYTA1OTM0YTY0
NTdkNmY1NmQ5ZDVjNWI1NDFlMmE4MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3RlbXBvcmFsLWluc3RhbnQuanMKQEAgLTAsMCArMSw0MDcgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZE5vdEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsID09PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBhIHZhbHVlIHRvIGJl
IGRpZmZlcmVudCBmcm9tICR7ZXhwZWN0ZWR9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworICAgIGlmICht
ZXNzYWdlICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChtZXNzYWdlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXScpIHsKKyAgICAgICAgICAg
IGlmICghbWVzc2FnZS50ZXN0KFN0cmluZyhlcnJvcikpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgZXhwZWN0ZWQgJyR7U3RyaW5nKGVycm9yKX0nIHRvIG1hdGNoICR7bWVzc2Fn
ZX0hYCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJy
b3IpLCBtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gZXBvY2gKK3sKKyAgICBj
b25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoMG4pLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaFNlY29uZHMoMCksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDApLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3Rh
bnQuZnJvbUVwb2NoTmFub3NlY29uZHMoMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JFYWNo
KChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRzLCAw
KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywgMCk7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQudG9TdHJpbmcoKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQudG9KU09OKCksICcxOTcwLTAxLTAxVDAwOjAwOjAwWicpOworICAgIH0pOwor
fQorCisvLyBwb3NpdGl2ZSBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWwor
ICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiks
CisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygxXzAwMF8wMDBfMDAw
KSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMV8wMDBf
MDAwXzAwMF8wMDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vj
b25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hOYW5vc2Vjb25kcygxXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAg
IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAwMS0wOS0wOVQwMTo0Njo0MFonKSwKKyAgICBdOwor
ICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaFNlY29uZHMsIDFfMDAwXzAwMF8wMDApOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAxXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3Vs
ZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOwor
ICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBf
MDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjAw
MS0wOS0wOVQwMTo0Njo0MFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwg
JzIwMDEtMDktMDlUMDE6NDY6NDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG5lZ2F0aXZlIGVwb2No
IHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5J
bnN0YW50KC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtMV8wMDBfMDAwXzAwMCksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKC0xXzAwMF8wMDBfMDAwXzAwMCksCisgICAg
ICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC0xXzAwMF8wMDBfMDAw
XzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25k
cygtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5mb3JF
YWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNvbmRz
LCAtMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNl
Y29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWNyb3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwXzAwMF8wMDBfMDAwXzAwMG4p
OworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxOTM4LTA0LTI0VDIyOjEz
OjIwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMTkzOC0wNC0yNFQy
MjoxMzoyMFonKTsKKyAgICB9KTsKK30KKworLy8gbWF4aW50NjQgZXBvY2ggdmFsdWUKK3sKKyAg
ICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQoOTIyMzM3
MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKDkyMjMzNzIwMzY4NTQ3NzU4MDduKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tKCcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKSwKKyAgICBdOworICAgIGluc3Rh
bnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aFNlY29uZHMsIDkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWls
bGlzZWNvbmRzLCA5MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9j
aE1pY3Jvc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NW4pOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTmFub3NlY29uZHMsIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMjI2Mi0wNC0xMVQyMzo0NzoxNi44NTQ3NzU4MDda
Jyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcyMjYyLTA0LTExVDIzOjQ3
OjE2Ljg1NDc3NTgwN1onKTsKKyAgICB9KTsKK30KKworLy8gbWluaW50NjQgZXBvY2ggdmFsdWUK
K3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQo
LTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hOYW5vc2Vjb25kcygtOTIyMzM3MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5J
bnN0YW50LmZyb20oJzE2NzctMDktMjFUMDA6MTI6NDMuMTQ1MjI0MTkyWicpLAorICAgIF07Cisg
ICAgaW5zdGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoU2Vjb25kcywgLTkyMjMzNzIwMzYpOworICAgICAgICBzaG91bGRCZShpbnN0YW50
LmVwb2NoTWlsbGlzZWNvbmRzLCAtOTIyMzM3MjAzNjg1NCk7CisgICAgICAgIHNob3VsZEJlKGlu
c3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC05MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNo
b3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsK
KyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnMTY3Ny0wOS0yMVQwMDoxMjo0
My4xNDUyMjQxOTJaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxNjc3
LTA5LTIxVDAwOjEyOjQzLjE0NTIyNDE5MlonKTsKKyAgICB9KTsKK30KKworLy8gbWF4IEluc3Rh
bnQgcmFuZ2UKK3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFs
Lkluc3RhbnQoODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFs
Lkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyg4NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1w
b3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwKSwK
KyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoODY0MDBfMDAw
MF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5v
c2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgODY0MDBfMDAwMF8wMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pbGxpc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJl
KGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7Cisg
ICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgODY0MDBfMDAwMF8wMDAw
XzAwMF8wMDBfMDAwbik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJysy
NzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09O
KCksICcrMjc1NzYwLTA5LTEzVDAwOjAwOjAwWicpOworICAgIH0pOworfQorCisvLyBtaW4gSW5z
dGFudCByYW5nZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9y
YWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBv
cmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygtODY0MDBfMDAwMF8wMDAwKSwKKyAgICAgICAg
VGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTg2NDAwXzAwMDBfMDAwMF8w
MDApLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcygtODY0
MDBfMDAwMF8wMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBv
Y2hOYW5vc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKSwKKyAgICBdOwor
ICAgIGluc3RhbnRzLmZvckVhY2goKGluc3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaFNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAtODY0MDBfMDAwMF8wMDAwXzAwMCk7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWNyb3NlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAw
XzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTmFub3NlY29uZHMsIC04NjQw
MF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0
cmluZygpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC50b0pTT04oKSwgJy0yNzE4MjEtMDQtMjBUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisK
Ky8vIHRvbyBsYXJnZQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoODY0
MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC9cYjg2NDAwMDAwMDAwMDAw
MDAwMDAwMDFcYi8pOworLy8gdG9vIHNtYWxsCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9y
YWwuSW5zdGFudCgtODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBfMDAxbiksIFJhbmdlRXJyb3IsIC8t
ODY0MDAwMDAwMDAwMDAwMDAwMDAwMVxiLyk7CisvLyBsYXJnZXIgdGhhbiBtYXhpbnQxMjgKK3No
b3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFuIDw8IDEyOW4pLCBSYW5nZUVy
cm9yLCAvXGI2ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0MjI5MTJcYi8pOworLy8g
c21hbGxlciB0aGFuIG1pbmludDEyOAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLklu
c3RhbnQoLTFuIDw8IDEyOW4pLCBSYW5nZUVycm9yLCAvLTY4MDU2NDczMzg0MTg3NjkyNjkyNjc0
OTIxNDg2MzUzNjQyMjkxMlxiLyk7CisvLyBkb2VzIG5vdCBjcmFzaCB3aGVuIGJpZ2ludCBsb25n
ZXIgdGhhbiBtYXhpbnQzMiBkaWdpdHMKK3Nob3VsZFRocm93KCgpID0+IG5ldyBUZW1wb3JhbC5J
bnN0YW50KEJpZ0ludCgnOScucmVwZWF0KDIxNDc0ODM2NDcpKSksIFJhbmdlRXJyb3IpOworLy8g
Y29uc3RydWN0cyBmcm9tIHN0cmluZworc2hvdWxkQmUobmV3IFRlbXBvcmFsLkluc3RhbnQoJzAn
KS5lcG9jaE5hbm9zZWNvbmRzLCAwbik7CisvLyB0aHJvd3Mgb24gbnVtYmVyCitzaG91bGRUaHJv
dygoKSA9PiBuZXcgVGVtcG9yYWwuSW5zdGFudCgwKSwgVHlwZUVycm9yKTsKKy8vIHRocm93cyBv
biBzdHJpbmcgdGhhdCBkb2VzIG5vdCBjb252ZXJ0IHRvIEJpZ0ludAorc2hvdWxkVGhyb3coKCkg
PT4gbmV3IFRlbXBvcmFsLkluc3RhbnQoJ2FiYzEyMycpLCBTeW50YXhFcnJvcik7CisKKy8vIElu
c3RhbnQuZnJvbShpbnN0YW50KSBpcyBub3QgdGhlIHNhbWUgb2JqZWN0Cit7CisgICAgY29uc3Qg
aW5zdCA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAyMC0wMi0xMlQxMTo0MiswMTowMFtFdXJv
cGUvQW1zdGVyZGFtXScpOworICAgIHNob3VsZE5vdEJlKFRlbXBvcmFsLkluc3RhbnQuZnJvbShp
bnN0KSwgaW5zdCk7Cit9CisKKy8vIHRvU3RyaW5nCisKK3sKKyAgICBjb25zdCBpMSA9IFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyM1onKTsKKyAgICBjb25zdCBpMiA9IFRl
bXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKKyAgICBjb25zdCBp
MyA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOwor
CisgICAgLy8gZGVmYXVsdCBpcyB0byBlbWl0IHNlY29uZHMgYW5kIGRyb3AgdHJhaWxpbmcgemVy
b3MgYWZ0ZXIgdGhlIGRlY2ltYWwnCisgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcoKSwgJzE5NzYt
MTEtMThUMTU6MjM6MDBaJyk7CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoKSwgJzE5NzYtMTEt
MThUMTU6MjM6MzBaJyk7CisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThU
MTU6MjM6MzAuMTIzNFonKTsKKworICAgIC8vIHRydW5jYXRlcyB0byBtaW51dGUKKyAgICBbaTEs
IGkyLCBpM10uZm9yRWFjaCgoaSkgPT4gc2hvdWxkQmUoaS50b1N0cmluZyh7IHNtYWxsZXN0VW5p
dDogJ21pbnV0ZScgfSksICcxOTc2LTExLTE4VDE1OjIzWicpKTsKKworICAgIC8vIG90aGVyIHNt
YWxsZXN0VW5pdHMgYXJlIGFsaWFzZXMgZm9yIGZyYWN0aW9uYWwgZGlnaXRzCisgICAgc2hvdWxk
QmUoaTMudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7
IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDAgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5n
KHsgc21hbGxlc3RVbml0OiAnbWlsbGlzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9u
YWxTZWNvbmREaWdpdHM6IDMgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxl
c3RVbml0OiAnbWljcm9zZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmRE
aWdpdHM6IDYgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAn
bmFub3NlY29uZCcgfSksIGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOSB9
KSk7CisKKyAgICAvLyB0cnVuY2F0ZSBvciBwYWQgdG8gMiBwbGFjZXMKKyAgICB7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDIgfTsKKyAgICAgICAg
c2hvdWxkQmUoaTEudG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAwLjAwWicp
OworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMDBaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xMlonKTsKKyAgICB9CisgICAgLy8gcGFkIHRvIDcgcGxhY2VzCisg
ICAgeworICAgICAgICBjb25zdCBvcHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA3
IH07CisgICAgICAgIHNob3VsZEJlKGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQx
NToyMzowMC4wMDAwMDAwWicpOworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25z
KSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMu
dG9TdHJpbmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQwMDBaJyk7CisgICAg
fQorCisgICAgLy8gcm91bmQgdG8gbmVhcmVzdAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsg
c21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcx
OTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25h
bFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyM1onKTsKKyAgICAvLyByb3VuZCB1cAorICAgIHNob3VsZEJlKGkyLnRv
U3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSks
ICcxOTc2LTExLTE4VDE1OjI0WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyNFonKTsKKyAgICAvLyByb3VuZCBkb3duCisgICAgWydmbG9vcicsICd0cnVu
YyddLmZvckVhY2goKHJvdW5kaW5nTW9kZSkgPT4geworICAgICAgICBzaG91bGRCZShpMi50b1N0
cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEt
MThUMTU6MjNaJyk7CisgICAgICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogMywgcm91bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNa
Jyk7CisgICAgfSk7CisKKyAgICB7CisgICAgICAgIC8vIHJvdW5kaW5nIGRvd24gaXMgdG93YXJk
cyB0aGUgQmlnIEJhbmcsIG5vdCB0b3dhcmRzIDEgQkNFCisgICAgICAgIGNvbnN0IGk0ID0gVGVt
cG9yYWwuSW5zdGFudC5mcm9tKCctMDAwMDk5LTEyLTE1VDEyOjAwOjAwLjVaJyk7CisgICAgICAg
IHNob3VsZEJlKGk0LnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJywgcm91bmRpbmdN
b2RlOiAnZmxvb3InIH0pLCAnLTAwMDA5OS0xMi0xNVQxMjowMDowMFonKTsKKworICAgICAgICAv
LyByb3VuZGluZyBjYW4gYWZmZWN0IGFsbCB1bml0cworICAgICAgICBjb25zdCBpNSA9IFRlbXBv
cmFsLkluc3RhbnQuZnJvbSgnMTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5OTlaJyk7CisgICAg
ICAgIHNob3VsZEJlKGk1LnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOCwgcm91
bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMDAwMDAw
WicpOworICAgIH0KK30KKworLy8gbGVhcCBzZWNvbmQgaXMgY29uc3RyYWluZWQKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMjAxNi0xMi0zMVQyMzo1OTo2MFonKX1gLCAnMjAx
Ni0xMi0zMVQyMzo1OTo1OVonKTsKKy8vIHZhcmlhbnQgdGltZSBzZXBhcmF0b3JzCitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMTggMTU6MjNaJyl9YCwgJzE5NzYt
MTEtMThUMTU6MjM6MDBaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMTh0MTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyB2YXJpYW50
IFVUQyBkZXNpZ25hdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYt
MTEtMThUMTU6MjN6Jyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyBhbnkgbnVtYmVy
IG9mIGRlY2ltYWwgcGxhY2VzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5
NzYtMTEtMThUMTU6MjM6MzAuMVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicp
fWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToy
MzozMC4xMjNaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEt
MThUMTU6MjM6MzAuMTIzNFonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1
WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1WicpOworc2hvdWxkQmUoYCR7VGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NlonKX1gLCAnMTk3Ni0x
MS0xOFQxNToyMzozMC4xMjM0NTZaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZy
b20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2N1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MC4xMjM0NTY3WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyMzQ1Njc4WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4
WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIz
OjMwLjEyMzQ1Njc4OVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7Cisv
LyB2YXJpYW50IGRlY2ltYWwgc2VwYXJhdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50
LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAsMTJaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MTJaJyk7CisvLyB2YXJpYW50IG1pbnVzIHNpZ24KK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMlx1MjIxMjAyOjAwJyl9YCwgJzE5NzYtMTEt
MThUMTc6MjM6MzAuMTJaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJ1x1
MjIxMjAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKX1gLCAnLTAwOTk5OS0xMS0xOFQxNToyMzoz
MC4xMlonKTsKKy8vIG1peHR1cmUgb2YgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAorc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIz
OjMwLjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTUyMzMw
LjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVt
cG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwgJzE5
NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMw
LjFaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThU
MTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJl
KGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnKzAwMTk3NjExMThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjEx
MThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxk
QmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIzMzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKKy8vIG9wdGlvbmFsIHBhcnRzCitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzArMDAnKX1gLCAn
MTk3Ni0xMS0xOFQxNToyMzozMFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNVonKX1gLCAnMTk3Ni0xMS0xOFQxNTowMDowMFonKTsKKy8vIGlnbm9y
ZXMgYW55IHNwZWNpZmllZCBjYWxlbmRhcgorLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyCisvLyBz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIz
NDU2Nzg5Wlt1LWNhPWRpc2NvcmRdJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5
WicpOworLy8gbm8ganVuayBhdCBlbmQgb2Ygc3RyaW5nCitzaG91bGRUaHJvdygoKSA9PiBUZW1w
b3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wmp1bmsnKSwg
UmFuZ2VFcnJvcik7CisKKy8vIEZvciBjb252ZW5pZW5jZSBpbiBzZXZlcmFsIHRlc3RzCitjb25z
dCBlcG9jaCA9IG5ldyBUZW1wb3JhbC5JbnN0YW50KDBuKTsKK2NvbnN0IG1pblZhbHVlID0gbmV3
IFRlbXBvcmFsLkluc3RhbnQoLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pOworY29uc3Qg
bWF4VmFsdWUgPSBuZXcgVGVtcG9yYWwuSW5zdGFudCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8w
MDBuKTsKKworLy8gYWRkKCkKKworeworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IGhvdXJzOiAx
IH0pLmVwb2NoTmFub3NlY29uZHMsIDM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBob3VyczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTM2MDBfMDAwXzAwMF8w
MDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaW51dGVzOiAxIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIDYwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWludXRl
czogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTYwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgc2Vjb25kczogLTEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWxs
aXNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgbWlsbGlzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8w
MDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWljcm9zZWNvbmRzOiAxIH0pLmVw
b2NoTmFub3NlY29uZHMsIDFfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWljcm9z
ZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBuKTsKKyAgICBzaG91bGRCZShl
cG9jaC5hZGQoeyBuYW5vc2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxbik7CisgICAg
c2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMs
IC0xbik7Cit9CisKK3sKKyAgICAvLyBtYXggZHVyYXRpb24gdGhhdCBjYW4gYmUgYWRkZWQgdG8g
YW55IEluc3RhbnQKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBob3VyczogNDhfMDAwMF8w
MDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAg
IHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IGhvdXJzOiAtNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFu
b3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZh
bHVlLmFkZCh7IG1pbnV0ZXM6IDI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1h
eFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1p
bnV0ZXM6IC0yODgwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9j
aE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBzZWNvbmRzOiAxNzI4
MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29u
ZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IHNlY29uZHM6IC0xNzI4MDBfMDAwMF8w
MDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAg
IC8vIG5vdGUsIHVuc2FmZSBpbnRlZ2VycyBmcm9tIGhlcmUgb247IHRoZSBtdWx0aXBsaWNhdGlv
biB0byBjb252ZXJ0CisgICAgLy8gbWlsbGlzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgdG8gbmFu
b3NlY29uZHMgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlCisgICAgLy8gYmlnaW50IGRvbWFpbi4K
KyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBtaWxsaXNlY29uZHM6IDE3MjgwMF8wMDAwXzAw
MDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOwor
ICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pbGxpc2Vjb25kczogLTE3MjgwMF8wMDAwXzAw
MDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOwor
ICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pY3Jvc2Vjb25kczogMTcyODAwXzAwMDBfMDAw
MF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pY3Jvc2Vjb25kczogLTE3MjgwMF8wMDAw
XzAwMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBuYW5vc2Vjb25kczogMTcyODAwXzAw
MDBfMDAwMF8wMDBfMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5h
bm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5hZGQoeyBuYW5vc2Vjb25kczogLTE3
MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUu
ZXBvY2hOYW5vc2Vjb25kcyk7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxvd2luZyA2NCBiaXRzCisg
ICAgY29uc3QgZXhwNjQgPSAyICoqIDY0OworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNv
bmRzJywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTogZXhwNjQgfSks
IFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5p
dF06IC1leHA2NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7CisgICAgc2hvdWxkQmUoZXBvY2gu
YWRkKHsgbmFub3NlY29uZHM6IGV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIDE4NDQ2NzQ0MDcz
NzA5NTUxNjE2bik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IC1leHA2
NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKK30KKworewor
ICAgIC8vIG92ZXJmbG93aW5nIDEyOCBiaXRzCisgICAgWydob3VycycsICdtaW51dGVzJywgJ3Nl
Y29uZHMnLCAnbWlsbGlzZWNvbmRzJywgJ21pY3Jvc2Vjb25kcycsICduYW5vc2Vjb25kcyddLmZv
ckVhY2goKHVuaXQpID0+IHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsg
W3VuaXRdOiBOdW1iZXIuTUFYX1ZBTFVFIH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiAtTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFu
Z2VFcnJvcik7CisgICAgfSk7Cit9CisKKy8vIHN1YnRyYWN0KCkKKworeworICAgIHNob3VsZEJl
KGVwb2NoLnN1YnRyYWN0KHsgaG91cnM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTM2MDBfMDAw
XzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IGhvdXJzOiAtMSB9KS5l
cG9jaE5hbm9zZWNvbmRzLCAzNjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2gu
c3VidHJhY3QoeyBtaW51dGVzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC02MF8wMDBfMDAwXzAw
MG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWludXRlczogLTEgfSkuZXBvY2hO
YW5vc2Vjb25kcywgNjBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFj
dCh7IHNlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBuKTsKKyAg
ICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IHNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29u
ZHMsIDFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pbGxp
c2Vjb25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMs
IDFfMDAwXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRz
OiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1
YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMG4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IDEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTFuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRz
OiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxbik7Cit9CisKK3sKKyAgICAvLyBtYXggZHVyYXRp
b24gdGhhdCBjYW4gYmUgYWRkZWQgdG8gYW55IEluc3RhbnQKKyAgICBzaG91bGRCZShtYXhWYWx1
ZS5zdWJ0cmFjdCh7IGhvdXJzOiA0OF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWlu
VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3Qo
eyBob3VyczogLTQ4XzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9j
aE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6
IDI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3Nl
Y29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbWludXRlczogLTI4ODBf
MDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMp
OworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgc2Vjb25kczogMTcyODAwXzAwMDBf
MDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBzaG91bGRCZShtaW5WYWx1ZS5zdWJ0cmFjdCh7IHNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAw
IH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIC8v
IG5vdGUsIHVuc2FmZSBpbnRlZ2VycyBmcm9tIGhlcmUgb247IHRoZSBtdWx0aXBsaWNhdGlvbiB0
byBjb252ZXJ0CisgICAgLy8gbWlsbGlzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgdG8gbmFub3Nl
Y29uZHMgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlCisgICAgLy8gYmlnaW50IGRvbWFpbi4KKyAg
ICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogMTcyODAwXzAwMDBf
MDAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IC0xNzI4MDBf
MDAwMF8wMDAwXzAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNv
bmRzKTsKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogMTcy
ODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2No
TmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbWljcm9zZWNv
bmRzOiAtMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZh
bHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsg
bmFub3NlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vj
b25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUu
c3VidHJhY3QoeyBuYW5vc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSku
ZXBvY2hOYW5vc2Vjb25kcywgbWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cit9CisKK3sKKyAg
ICAvLyBvdmVyZmxvd2luZyA2NCBiaXRzCisgICAgY29uc3QgZXhwNjQgPSAyICoqIDY0OworICAg
IFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3Nl
Y29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVw
b2NoLnN1YnRyYWN0KHsgW3VuaXRdOiBleHA2NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNo
b3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiAtZXhwNjQgfSksIFJhbmdl
RXJyb3IpOworICAgIH0pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29u
ZHM6IGV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNm4pOwor
ICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IC1leHA2NCB9KS5lcG9j
aE5hbm9zZWNvbmRzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNm4pOworfQorCit7CisgICAgLy8gb3Zl
cmZsb3dpbmcgMTI4IGJpdHMKKyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsICdt
aWxsaXNlY29uZHMnLCAnbWljcm9zZWNvbmRzJywgJ25hbm9zZWNvbmRzJ10uZm9yRWFjaCgodW5p
dCkgPT4geworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5zdWJ0cmFjdCh7IFt1bml0
XTogTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93
KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3VuaXRdOiAtTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFu
Z2VFcnJvcik7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggOTYyZDUyNDYyNTI1YWZi
YjI5NmQ5YWNmZDZkOGEwYTE0NGYyMGIzNC4uYWVkNjM0YjE4ZmNhNmZhOTA5NjRjOGU5MTJjN2Fi
NjMyZjNiMzFlNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBi
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjMsNyArMjMsOCBAQCBza2lwOgogICAg
IC0gY2FsbGFibGUtYm91bmRhcnktcmVhbG1zCiAgIHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvQ2FsZW5kYXIKLSAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3Rh
bnQKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9u
ZWREYXRlVGltZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5
cGUvdG9ab25lZERhdGVUaW1lSVNPCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Ob3cK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQpAQCAtMzQsNyArMzUsOCBAQCBza2lwOgogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvVGltZVpvbmUKICAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL1pvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9DYWxl
bmRhcgotICAgIC0gdGVzdC9pbnRsNDAyL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvaW50
bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRl
c3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08K
ICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvaW50bDQwMi9UZW1w
b3JhbC9QbGFpbkRhdGUKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGVUaW1l
CkBAIC0yNDcsNiArMjQ5LDcgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L0R1cmF0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9zbWFsbGVzdHVuaXQtcGx1cmFscy1hY2NlcHRl
ZC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3Rv
dGFsL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3VuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwor
ICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcv
c21hbGxlc3R1bml0LXBsdXJhbHMtYWNjZXB0ZWQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL1BsYWluVGltZS9jb21wYXJlL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL2Zyb20vY2FsZW5kYXItdGVtcG9y
YWwtb2JqZWN0LmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJv
dG90eXBlL2VxdWFscy9jYWxlbmRhci10ZW1wb3JhbC1vYmplY3QuanMKQEAgLTI3Miw2ICsyNzUs
MTMgQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3Rv
dHlwZS9zdWJ0cmFjdC9vcmRlci1vZi1vcGVyYXRpb25zLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvdG90YWwvZGF0ZXVudGlsLWZpZWxkLmpzCiAK
KyAgICAjIERlcGVuZHMgb24gVGVtcG9yYWwuVGltZVpvbmUKKyAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5h
bm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9JbnN0YW50L3Byb3RvdHlwZS90b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25k
c2Zvci1vdXQtb2YtcmFuZ2UuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3Rh
bnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLXdy
b25nLXR5cGUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90
eXBlL3RvU3RyaW5nL3RpbWV6b25lLXN0cmluZy1kYXRldGltZS5qcworICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUuanMKKwog
ICAgICMgRGVwZW5kcyBvbiBUZW1wb3JhbC5ab25lZERhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0
LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS1u
ZWdhdGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9EdXJhdGlvbi9jb21wYXJlL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRv
ZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5qcwpAQCAtMjk5LDYgKzMwOSwxMSBAQCBz
a2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3Rv
dGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25k
c2Zvci1ub24taW50ZWdlci5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRp
b24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRv
ZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2UuanMKICAgICAtIHRlc3QvYnVpbHQtaW5z
L1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS90b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRp
bWUtdGltZXpvbmUtZ2V0b2Zmc2V0bmFub3NlY29uZHNmb3Itd3JvbmctdHlwZS5qcworICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0
ZXRpbWUuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvZnJvbS9hcmd1
bWVudC16b25lZGRhdGV0aW1lLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS9lcXVhbHMvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVz
dC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvc2luY2UvYXJndW1lbnQtem9u
ZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90
b3R5cGUvdW50aWwvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcwogICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvUGxhaW5UaW1lL2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS1uZWdh
dGl2ZS1lcG9jaG5hbm9zZWNvbmRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Q
bGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNl
dG5hbm9zZWNvbmRzZm9yLW5vbi1pbnRlZ2VyLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9QbGFpblRpbWUvY29tcGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdl
dG9mZnNldG5hbm9zZWNvbmRzZm9yLW91dC1vZi1yYW5nZS5qcwpAQCAtMzM0LDUgKzM0OSw2IEBA
IHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUv
cm91bmQvYmFsYW5jZS1uZWdhdGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9yb3VuZC9yb3VuZC1uZWdhdGl2ZS1yZXN1bHQuanMK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFj
dC9iYWxhbmNlLW5lZ2F0aXZlLXJlc3VsdC5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvaW5zdGFudC1zdHJpbmcuanMKICAgICAtIHRlc3Qv
YnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5cGUvc2luY2UvYmFsYW5jZS1uZWdh
dGl2ZS10aW1lLXVuaXRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRp
bWUvcHJvdG90eXBlL3VudGlsL2JhbGFuY2UtbmVnYXRpdmUtdGltZS11bml0cy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443019</attachid>
            <date>2021-11-01 14:46:46 -0700</date>
            <delta_ts>2021-11-02 12:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229826-20211101144645.patch</filename>
            <type>text/plain</type>
            <size>140936</size>
            <attacher name="Philip Chimento">philip.chimento</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YmU2ZjRjOWY4ZjNhMjFjNThiYTQzYjcwZmExZjIyMzVjNDBlMDJkLi5jZDM5YzVkOWI2YjBlZGZh
NjgzM2I4MWQ0YjU2YzllZGI1N2Y1ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcnVudGltZS9JU084NjAx
LmNwcDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VJbnN0YW50KTogQWRkIGEgcGFyc2lu
ZyBmdW5jdGlvbiBmb3IgSW5zdGFudCBzdHJpbmdzCisgICAgICAgICAgcmV1c2luZyBhcyBtdWNo
IGFzIHBvc3NpYmxlIGZyb20gdGhlIG90aGVyIHBhcnNpbmcgZnVuY3Rpb25zLgorICAgICAgICAo
SlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21JU09QYXJ0c0FuZE9mZnNldCk6IFN0YXRpYyBt
ZXRob2QgZm9yCisgICAgICAgICAgY3JlYXRpbmcgZnJvbSBJU08gY2FsZW5kYXIgY29tcG9uZW50
cyBhbmQgVVRDIG9mZnNldC4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6Y2hlY2tlZENhc3REb3Vi
bGVUb0ludDEyOCk6IEhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tpbmcKKyAgICAgICAgICB3aGV0
aGVyIGEgZG91YmxlIGNhbiBmaXQgaW50byBhbiBpbnQxMjggd2l0aG91dCBvdmVyZmxvdy4KKyAg
ICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjphZGQgY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpFeGFjdFRpbWU6OnJvdW5kKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhh
Y3RUaW1lOjpkaWZmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RU
aW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmg6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6RXhhY3RUaW1lKTogQWRkIGFuIEV4YWN0VGltZSB0
eXBlIHRoYXQgd3JhcHMKKyAgICAgICAgICBhbiBJbnQxMjggYW5kIGNhbiBkbyB0aGUgYmFzaWMg
b3BlcmF0aW9ucy4gVGhpcyB0eXBlIGNhbiBiZSByZXVzZWQgaW4KKyAgICAgICAgICBUZW1wb3Jh
bC5ab25lZERhdGVUaW1lLgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21F
cG9jaFNlY29uZHMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9j
aE1pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6ZnJvbUVw
b2NoTWljcm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjplcG9j
aFNlY29uZHMgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6OmVwb2No
TWlsbGlzZWNvbmRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RXhhY3RUaW1lOjpl
cG9jaE1pY3Jvc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGlt
ZTo6ZXBvY2hOYW5vc2Vjb25kcyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0
VGltZTo6bmFub3NlY29uZHNGcmFjdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OkV4YWN0VGltZTo6YXNTdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFj
dFRpbWU6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpFeGFjdFRpbWU6
Om9wZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3Bl
cmF0b3I8PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+PSBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkV4YWN0VGltZTo6b3BlcmF0b3I+IGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKTogQWRkIGEgbWluaW1hbAorICAg
ICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIYW5kbGVEYXRlVGltZVZhbHVlIGFic3RyYWN0
IG9wIGZyb20gdGhlCisgICAgICAgICAgVGVtcG9yYWwgc3BlY2lmaWNhdGlvbiwgb25seSBjb3Zl
cmluZyBUZW1wb3JhbC5JbnN0YW50LgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOiBVc2UgaXQgaW4gdGhlIGV4aXN0aW5nCisgICAgICAgICAgSW50bC5EYXRlVGltZUZv
cm1hdCBtZXRob2RzLgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6Y3JlYXRlRnJvbSk6IEFkZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGFu
IEludDEyOC4KKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6IFJlbW92ZSBkZWNsYXJhdGlv
biBmb3Igbm9uZXhpc3RlbnQgdG9VaW50NjRIZWFwKCkuCisgICAgICAgICogcnVudGltZS9KU0Rh
dGVNYXRoLmNwcDogTW92ZSB0aW1lVG9NUygpIGludG8gV1RGLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5zdGFudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRp
b24pOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
SW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFs
aWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudCk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsSW5zdGFudDo6ZnJvbSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5z
dGFudDo6ZnJvbUVwb2NoU2Vjb25kcyk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpm
cm9tRXBvY2hNaWNyb3NlY29uZHMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbEluc3RhbnQ6OmZy
b21FcG9jaE5hbm9zZWNvbmRzKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Ojpjb21w
YXJlKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OlRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbEluc3RhbnRQcm90b3R5cGU6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IpOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6Zm9ybWF0U2Vjb25kc1N0cmluZ1BhcnQpOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6YWJzKTogQWRkZWQgZm9yIGNsYXJpdHkuCisgICAgICAgIChKU0M6OnJvdW5kTnVtYmVy
VG9JbmNyZW1lbnQpOiBBZGQgb3ZlcmxvYWQgZm9yIEludDEyOC4KKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorCiAyMDIxLTExLTAxICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CiAKICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dCBjcmFzaGVzIGlmIHRoZSBsZW5ndGggKyBvYmplY3RPZmZzZXQgaXMgPiBVSU5UMzJfTUFYCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDBiZTFmOGJjOTU2ZmI0M2I4MzFmM2M0NDYyZDcxYThkMWQ4ZGU1NjQuLjg2NDgwNDFiNGUw
MTgyNGU4ZTBlNjJlMWE0NWU1MjU3Nzk1NzAzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEt
MTAtMjUgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgorCisgICAgICAg
IFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBZ
dXN1a2UgU3V6dWtpLgorCisgICAgICAgICogd3RmL0NoZWNrZWRBcml0aG1ldGljLmg6IERvbid0
IHVzZSBidWlsdGluIG9wZXJhdGlvbnMgaWYgX19pbnQxMjggaXMKKyAgICAgICAgICBiZWluZyBl
bXVsYXRlZCB1c2luZyBXVEY6OkludDEyOC4gQWxzbyB3b3JrIGFyb3VuZCBDbGFuZy9MaW51eCBi
dWcKKyAgICAgICAgICB3aGVyZSBfX2J1aWx0aW5fbXVsX292ZXJmbG93KCkgZG9lc24ndCB3b3Jr
IG9uIF9faW50MTI4LgorICAgICAgICAgIFNlZSBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NDA0CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgIChXVEY6
OnRpbWVUb01TKTogTW92ZWQgZnJvbSBKU0RhdGVNYXRoLmguCisKIDIwMjEtMTEtMDEgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdGlu
ZyBwcmVmZXJlbmNlIHRvIHJlcGxheSBDRyBkaXNwbGF5IGxpc3RzIG1hbnVhbGx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTc3MDgzYTQ2NDhlMDVmYjNiMjU0MDYyNDI1
YzBmNDI4Y2U1ZTgyMi4uYTVkZWQ2MjA3NGE4NTIyZjFkNTVjNzIyNmVlOTBkMDIwNDNjODI1MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEzLDYgKzExMyw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorICAg
IHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9UZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAg
ICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNWM0N2FmOTlkNDE3OGIyYzllNjRkMjU1
ZThlOTMzYzA4MDEyNDFkNi4uNzY4MTMwYjBiNzAzZWFlMjA1NjE4M2FiNjhhNzQzNTZmMjc3Zjgz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTE3NSw2ICsxNzUsOCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
aW5kZXggMTEyMjlkNTdiMmIzYmU4OGYxODBjYzZlODA3MTczNWVlNGNmYTllYy4uNjVmNDk2ZjI4
MmM3MTA3ODk2MDJjNThhNTVmMWZjZTk4ZGJkZDJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNzIsNiAr
NzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1
dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9U
ZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5
YTYzOTIzN2Y4YjI5ZDZjZmU4OGM2Y2JjMjFkNmE5MmM1YjczMzkyLi40ZWNhZTNmMDU5ODEzOThj
YmY2M2E0Njc5ZWU4ZGZjZmViNDY4NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtMjAwLDYgKzIwMCw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwK
ICAgICBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbER1cmF0
aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0
LmggXAorICAgIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsTm93Lmx1dC5oIFwKICAgICBU
ZW1wb3JhbE9iamVjdC5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5s
dXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVjNTZjMTBlYWEwZTRmMDZh
MmUzMGUzYWFiNjQ2YTBmMGRiYjY4YzguLmFhZTEwYmM0YjM2NWZjNjdhZWZlNzI3MTYwZDBiNTMz
MmUxNTZhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTc0LDYgKzE5NzQs
MTEgQEAKIAkJRTNGRjc1MzMxRDlDRUExODAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGRjc1MkYx
RDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZDMTJFRjI5NEUwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1MTEyRUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlk
ZXJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNDkx
MkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjZENjdENDAyNkY5MDJFOTAw
NkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudC5oICovOyB9OworCQlGNkQ2N0Q0MjI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5oICovOyB9OworCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNkQ2N0QzRTI2RjkwMkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
LmggKi87IH07CisJCUY2RDY3RDQ3MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRjZENjdENDgyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUubHV0LmggKi87IH07CiAJCUY2RjE1MDIxMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1w
b3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY2RjE1MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAq
LzsgfTsKIAkJRkUwNDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA0MTU1MjI1
MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTA1RkFGRDFGRTRDRURBMDAwOTMyMzAg
LyogRGVwcmVjYXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJENkExMTFGQkQ0OTFEMDAwMjQ1RjQgLyogRGVwcmVj
YXRlZEluc3BlY3RvclZhbHVlcy5jcHAgKi87IH07CkBAIC01MzcwLDYgKzUzNzUsMTQgQEAKIAkJ
RjY5MkE4N0QwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZG
NjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDSlNW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjZE
NjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQjI2RjkwMkU2MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzQzI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0QzRTI2Rjkw
MkU4MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Q0NTI2RjkxMzBBMDA2RTAzNDkgLyogVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNkQ2N0Q0NjI2RjkxMzBCMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RjE1MDE4
MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wb3JhbE5vdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NkYxNTAxOTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNkYxNTAxQTI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9yYWxP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMDQsNiArNzExNyw4IEBACiAJCQkJ
OTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0IC8qIFN5bWJvbFByb3RvdHlwZS5sdXQuaCAqLywKIAkJ
CQlFM0M0NjMwNTI2REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
Lmx1dC5oICovLAogCQkJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlGNkQ2N0Q0NjI2RjkxMzBC
MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUY2RjE1
MDIwMjY5M0Q0NTAwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCAqLywKIAkJCQk1MzNC
MTVERTFEQzdGNDYzMDA0RDUwMEEgLyogV2FzbU9wcy5oICovLAogCQkJCUFEMkZDQzBBMURCNTlD
NTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICov
LApAQCAtODA3Myw2ICs4MDg4LDEyIEBACiAJCQkJQTNDN0VEQjQyNkIwREIzNzAwNEMzNEM1IC8q
IFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCUEzQzdFREI1MjZCMERCMzcw
MDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcCAqLywKIAkJCQlBM0M3RURC
MDI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oICovLAorCQkJ
CUY2RDY3RDM5MjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuY3BwICovLAorCQkJ
CUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAqLywKKwkJCQlG
NkQ2N0QzQjI2RjkwMkU2MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3Bw
ICovLAorCQkJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5oICovLAorCQkJCUY2RDY3RDNEMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUuY3BwICovLAorCQkJCUY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLywKIAkJCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4
RUYgLyogVGVtcG9yYWxOb3cuY3BwICovLAogCQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAv
KiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1w
b3JhbE9iamVjdC5jcHAgKi8sCkBAIC0xMDgxNiw2ICsxMDgzNywxMSBAQAogCQkJCUEzQzdFREI5
MjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBM0M3RURCQTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0M3RURCNjI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjZENjdENDAyNkY5MDJF
OTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjZENjdE
NDIyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGNkQ2N0Q0NzI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNkQ2N0Q0NDI2RjkwMkU5MDA2
RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFs
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0UyNkU4NjdCODAwRTRDMjhC
IC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg2RkQ3QjI2RTg2
N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZGQ4Y2I2MjcyNDFiZTg4Y2VlZjA3
NDU5Yzg1ZWYzYzhhOWY4YzgzNy4uMmQ1ZmM0ZjM1NGJiZmQ0ZDk5MTRjYjJhYzIxNzA1MWY0MzFm
MTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAyMCw2ICsxMDIwLDkgQEAg
cnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50
aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCitydW50aW1lL1RlbXBvcmFsSW5zdGFu
dC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCitydW50aW1lL1Rl
bXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKaW5kZXggNTliMWM3ZWY1YjM5
M2QyZGE0OWU0MjY2OTk0NDAzNjY3NjhiOWE1MC4uMGE5N2Q0MDU4M2NhOWYxNzA3YzZlYjRiYTY0
YjBkYzE1OGJlMGVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SVNPODYwMS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5j
cHAKQEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJQYXJzZUludC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVy
TmFtZXMuaD4KQEAgLTg3Nyw2ICs4NzksMzcgQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBs
YWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWUKICAg
ICB9KTsKIH0KIAorc3RkOjpvcHRpb25hbDxFeGFjdFRpbWU+IHBhcnNlSW5zdGFudChTdHJpbmdW
aWV3IHN0cmluZykKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3Byb2QtVGVtcG9yYWxJbnN0YW50U3RyaW5nCisgICAgLy8gVGVtcG9yYWxJbnN0YW50U3RyaW5n
IDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lWm9uZU9mZnNldFJlcXVpcmVkCisgICAgLy8gICAgIERh
dGUgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMgVGltZVpvbmVPZmZzZXRSZXF1aXJlZAorCisg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lT2Zm
c2V0UmVxdWlyZWQKKyAgICAvLyBUaW1lWm9uZU9mZnNldFJlcXVpcmVkIDoKKyAgICAvLyAgICAg
VGltZVpvbmVVVENPZmZzZXQgVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uX29wdAorCisgICAg
cmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAt
PiBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4geworICAgICAgICBhdXRvIGRhdGV0aW1lID0gcGFy
c2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWRhdGV0aW1lKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBbZGF0ZSwgbWF5YmVUaW1lLCBtYXli
ZVRpbWVab25lXSA9IGRhdGV0aW1lLnZhbHVlKCk7CisgICAgICAgIGlmICghbWF5YmVUaW1lWm9u
ZSB8fCAoIW1heWJlVGltZVpvbmUtPm1feiAmJiAhbWF5YmVUaW1lWm9uZS0+bV9vZmZzZXQpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgLy8gRklYTUU6IHBhcnNl
IGNhbGVuZGFyIGFubm90YXRpb24KKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgUGxhaW5UaW1lIHRpbWU7Cisg
ICAgICAgIGlmIChtYXliZVRpbWUpCisgICAgICAgICAgICB0aW1lID0gbWF5YmVUaW1lLnZhbHVl
KCk7CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBtYXliZVRpbWVab25lLT5tX3ogPyAwIDog
Km1heWJlVGltZVpvbmUtPm1fb2Zmc2V0OworICAgICAgICByZXR1cm4geyBFeGFjdFRpbWU6OmZy
b21JU09QYXJ0c0FuZE9mZnNldChkYXRlLnllYXIoKSwgZGF0ZS5tb250aCgpLCBkYXRlLmRheSgp
LCB0aW1lLmhvdXIoKSwgdGltZS5taW51dGUoKSwgdGltZS5zZWNvbmQoKSwgdGltZS5taWxsaXNl
Y29uZCgpLCB0aW1lLm1pY3Jvc2Vjb25kKCksIHRpbWUubmFub3NlY29uZCgpLCBvZmZzZXQpIH07
CisgICAgfSk7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLWZvcm1hdHRpbWV6b25lb2Zmc2V0c3RyaW5nCiBTdHJpbmcgZm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiB7CkBAIC05NjksNSArMTAwMiwxMjkgQEAg
Ym9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mIGR1cmF0aW9uKQogICAgIHJldHVy
biB0cnVlOwogfQogCitFeGFjdFRpbWUgRXhhY3RUaW1lOjpmcm9tSVNPUGFydHNBbmRPZmZzZXQo
aW50MzJfdCB5LCB1aW50OF90IG1vbiwgdWludDhfdCBkLCB1bnNpZ25lZCBoLCB1bnNpZ25lZCBt
aW4sIHVuc2lnbmVkIHMsIHVuc2lnbmVkIG1zLCB1bnNpZ25lZCBtaWNyb3MsIHVuc2lnbmVkIG5z
LCBpbnQ2NF90IG9mZnNldCkKK3sKKyAgICBBU1NFUlQoeSA+PSAtOTk5OTk5ICYmIHkgPD0gOTk5
OTk5KTsKKyAgICBBU1NFUlQobW9uID49IDEgJiYgbW9uIDw9IDEyKTsKKyAgICBBU1NFUlQoZCA+
PSAxICYmIGQgPD0gMzEpOworICAgIEFTU0VSVChoIDw9IDIzKTsKKyAgICBBU1NFUlQobWluIDw9
IDU5KTsKKyAgICBBU1NFUlQocyA8PSA1OSk7CisgICAgQVNTRVJUKG1zIDw9IDk5OSk7CisgICAg
QVNTRVJUKG1pY3JvcyA8PSA5OTkpOworICAgIEFTU0VSVChucyA8PSA5OTkpOworCisgICAgZG91
YmxlIGRhdGVEYXlzID0gZGF0ZVRvRGF5c0Zyb20xOTcwKHksIG1vbiAtIDEsIGQpOworICAgIGRv
dWJsZSB0aW1lTXMgPSB0aW1lVG9NUyhoLCBtaW4sIHMsIG1zKTsKKyAgICBkb3VibGUgdXRjTXMg
PSBkYXRlRGF5cyAqIG1zUGVyRGF5ICsgdGltZU1zOworICAgIEludDEyOCB1dGNOcyA9IHN0YXRp
Y19jYXN0PEludDEyOD4odXRjTXMpICogMScwMDAnMDAwICsgbWljcm9zICogMTAwMCArIG5zOwor
ICAgIHJldHVybiBFeGFjdFRpbWUgeyB1dGNOcyAtIG9mZnNldCB9OworfQorCit1c2luZyBDaGVj
a2VkSW50MTI4ID0gQ2hlY2tlZDxJbnQxMjgsIFJlY29yZE92ZXJmbG93PjsKKworc3RhdGljIENo
ZWNrZWRJbnQxMjggY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkb3VibGUgbikKK3sKKyAgICAv
LyBCYXNlZCBvbiBfX2ZpeGRmdGkoKSBhbmQgX19maXh1bnNkZnRpKCkgZnJvbSBjb21waWxlcl9y
dDoKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvYmxvYi9mMzY3
MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMxL2NvbXBpbGVyLXJ0L2xpYi9idWls
dGlucy9mcF9maXhpbnRfaW1wbC5pbmMKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9s
bHZtLXByb2plY3QvYmxvYi9mMzY3MWRlNTUwMGZmMWY4MjEwNDE5MjI2YTk2MDNhN2Q4M2IxYTMx
L2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9mcF9maXh1aW50X2ltcGwuaW5jCisKKyAgICBzdGF0
aWMgY29uc3RleHByIGludCBzaWduaWZpY2FuZEJpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmRpZ2l0cyAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZXhwb25lbnRCaXRz
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46OmRpZ2l0cyAtIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6ZGlnaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4cG9uZW50
QmlhcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4X2V4cG9uZW50IC0gMTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGltcGxpY2l0Qml0ID0gdWludDY0X3QgeyAxIH0g
PDwgc2lnbmlmaWNhbmRCaXRzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc2lnbmlm
aWNhbmRNYXNrID0gaW1wbGljaXRCaXQgLSB1aW50NjRfdCB7IDEgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ2NF90IHNpZ25NYXNrID0gdWludDY0X3QgeyAxIH0gPDwgKHNpZ25pZmljYW5k
Qml0cyArIGV4cG9uZW50Qml0cyk7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBhYnNN
YXNrID0gc2lnbk1hc2sgLSB1aW50NjRfdCB7IDEgfTsKKworICAgIC8vIEJyZWFrIG4gaW50byBz
aWduLCBleHBvbmVudCwgc2lnbmlmaWNhbmQgcGFydHMuCisgICAgY29uc3QgdWludDY0X3QgYml0
cyA9ICpyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oJm4pOworICAgIGNvbnN0IHVpbnQ2NF90
IG5BYnMgPSBiaXRzICYgYWJzTWFzazsKKyAgICBjb25zdCBpbnQgc2lnbiA9IGJpdHMgJiBzaWdu
TWFzayA/IC0xIDogMTsKKyAgICBjb25zdCBpbnQgZXhwb25lbnQgPSAobkFicyA+PiBzaWduaWZp
Y2FuZEJpdHMpIC0gZXhwb25lbnRCaWFzOworICAgIGNvbnN0IHVpbnQ2NF90IHNpZ25pZmljYW5k
ID0gKG5BYnMgJiBzaWduaWZpY2FuZE1hc2spIHwgaW1wbGljaXRCaXQ7CisKKyAgICAvLyBJZiBl
eHBvbmVudCBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBpcyB6ZXJvLgorICAgIGlmIChleHBvbmVu
dCA8IDApCisgICAgICAgIHJldHVybiB7IDAgfTsKKworICAgIC8vIElmIHRoZSB2YWx1ZSBpcyB0
b28gbGFyZ2UgZm9yIHRoZSBpbnRlZ2VyIHR5cGUsIG92ZXJmbG93LgorICAgIGlmIChleHBvbmVu
dCA+PSAxMjgpCisgICAgICAgIHJldHVybiB7IFdURjo6UmVzdWx0T3ZlcmZsb3dlZCB9OworCisg
ICAgLy8gSWYgMCA8PSBleHBvbmVudCA8IHNpZ25pZmljYW5kQml0cywgcmlnaHQgc2hpZnQgdG8g
Z2V0IHRoZSByZXN1bHQuCisgICAgLy8gT3RoZXJ3aXNlLCBzaGlmdCBsZWZ0LgorICAgIEludDEy
OCByZXN1bHQgeyBzaWduaWZpY2FuZCB9OworICAgIGlmIChleHBvbmVudCA8IHNpZ25pZmljYW5k
Qml0cykKKyAgICAgICAgcmVzdWx0ID4+PSBzaWduaWZpY2FuZEJpdHMgLSBleHBvbmVudDsKKyAg
ICBlbHNlCisgICAgICAgIHJlc3VsdCA8PD0gZXhwb25lbnQgLSBzaWduaWZpY2FuZEJpdHM7Cisg
ICAgcmVzdWx0ICo9IHNpZ247CisgICAgcmV0dXJuIHsgcmVzdWx0IH07Cit9CisKK3N0ZDo6b3B0
aW9uYWw8RXhhY3RUaW1lPiBFeGFjdFRpbWU6OmFkZChEdXJhdGlvbiBkdXJhdGlvbikgY29uc3QK
K3sKKyAgICBBU1NFUlQoIWR1cmF0aW9uLnllYXJzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24u
bW9udGhzKCkpOworICAgIEFTU0VSVCghZHVyYXRpb24ud2Vla3MoKSk7CisgICAgQVNTRVJUKCFk
dXJhdGlvbi5kYXlzKCkpOworCisgICAgQ2hlY2tlZEludDEyOCByZXN1bHROcyB7IG1fZXBvY2hO
YW5vc2Vjb25kcyB9OworCisgICAgLy8gVGhlIGR1cmF0aW9uJ3MgaG91cnMsIG1pbnV0ZXMsIHNl
Y29uZHMsIGFuZCBtaWxsaXNlY29uZHMgc2hvdWxkIGJlCisgICAgLy8gYWJsZSB0byBiZSBjYXN0
IGludG8gYSA2NC1iaXQgaW50LiAyKjFlOCAyNC1ob3VyIGRheXMgaXMgdGhlIG1heGltdW0KKyAg
ICAvLyB0aW1lIHNwYW4gZm9yIGV4YWN0IHRpbWUsIHNvIGlmIHdlIGFscmVhZHkga25vdyB0aGF0
IHRoZSBkdXJhdGlvbiBleGNlZWRzCisgICAgLy8gdGhhdCwgdGhlbiB3ZSBjYW4gYmFpbCBvdXQu
CisKKyAgICBDaGVja2VkSW50MTI4IGhvdXJzID0gY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChk
dXJhdGlvbi5ob3VycygpKTsKKyAgICByZXN1bHROcyArPSBob3VycyAqIEV4YWN0VGltZTo6bnNQ
ZXJIb3VyOworICAgIENoZWNrZWRJbnQxMjggbWludXRlcyA9IGNoZWNrZWRDYXN0RG91YmxlVG9J
bnQxMjgoZHVyYXRpb24ubWludXRlcygpKTsKKyAgICByZXN1bHROcyArPSBtaW51dGVzICogRXhh
Y3RUaW1lOjpuc1Blck1pbnV0ZTsKKyAgICBDaGVja2VkSW50MTI4IHNlY29uZHMgPSBjaGVja2Vk
Q2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLnNlY29uZHMoKSk7CisgICAgcmVzdWx0TnMgKz0g
c2Vjb25kcyAqIEV4YWN0VGltZTo6bnNQZXJTZWNvbmQ7CisgICAgQ2hlY2tlZEludDEyOCBtaWxs
aXNlY29uZHMgPSBjaGVja2VkQ2FzdERvdWJsZVRvSW50MTI4KGR1cmF0aW9uLm1pbGxpc2Vjb25k
cygpKTsKKyAgICByZXN1bHROcyArPSBtaWxsaXNlY29uZHMgKiBFeGFjdFRpbWU6Om5zUGVyTWls
bGlzZWNvbmQ7CisgICAgQ2hlY2tlZEludDEyOCBtaWNyb3NlY29uZHMgPSBjaGVja2VkQ2FzdERv
dWJsZVRvSW50MTI4KGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpKTsKKyAgICByZXN1bHROcyArPSBt
aWNyb3NlY29uZHMgKiBFeGFjdFRpbWU6Om5zUGVyTWljcm9zZWNvbmQ7CisgICAgcmVzdWx0TnMg
Kz0gY2hlY2tlZENhc3REb3VibGVUb0ludDEyOChkdXJhdGlvbi5uYW5vc2Vjb25kcygpKTsKKyAg
ICBpZiAocmVzdWx0TnMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgRXhhY3RUaW1lIHJlc3VsdCB7IHJlc3VsdE5zLnZhbHVlKCkgfTsKKyAgICBp
ZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworSW50MTI4IEV4YWN0VGltZTo6cm91bmQoSW50MTI4IHF1YW50
aXR5LCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUg
cm91bmRpbmdNb2RlKQoreworICAgIEludDEyOCBpbmNyZW1lbnROcyB7IGluY3JlbWVudCB9Owor
ICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiBpbmNyZW1l
bnROcyAqPSBFeGFjdFRpbWU6Om5zUGVySG91cjsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6Ok1pbnV0ZTogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1lOjpuc1Blck1pbnV0ZTsgYnJlYWs7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1l
Ojpuc1BlclNlY29uZDsgYnJlYWs7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25k
OiBpbmNyZW1lbnROcyAqPSBFeGFjdFRpbWU6Om5zUGVyTWlsbGlzZWNvbmQ7IGJyZWFrOworICAg
IGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDogaW5jcmVtZW50TnMgKj0gRXhhY3RUaW1l
Ojpuc1Blck1pY3Jvc2Vjb25kOyBicmVhazsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3Nl
Y29uZDogYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIHJldHVybiByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNy
ZW1lbnROcywgcm91bmRpbmdNb2RlKTsKK30KKworLy8gRGlmZmVyZW5jZUluc3RhbnQgKCBuczEs
IG5zMiwgcm91bmRpbmdJbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlICkKKy8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWRpZmZlcmVu
Y2VpbnN0YW50CitJbnQxMjggRXhhY3RUaW1lOjpkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwg
dW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5k
aW5nTW9kZSkgY29uc3QKK3sKKyAgICBJbnQxMjggZGlmZiA9IG90aGVyLm1fZXBvY2hOYW5vc2Vj
b25kcyAtIG1fZXBvY2hOYW5vc2Vjb25kczsKKyAgICByZXR1cm4gcm91bmQoZGlmZiwgaW5jcmVt
ZW50LCB1bml0LCByb3VuZGluZ01vZGUpOworfQorCitFeGFjdFRpbWUgRXhhY3RUaW1lOjpyb3Vu
ZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91
bmRpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBFeGFjdFRpbWUgeyByb3VuZChtX2Vwb2No
TmFub3NlY29uZHMsIGluY3JlbWVudCwgdW5pdCwgcm91bmRpbmdNb2RlKSB9OworfQorCiB9IC8v
IG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBjNzQyNGFlOTMxZWZlMWI1MGRjMGFjZDIyYmYyMWI5
OTcwOTU2YTZmLi5jMDdlNzdlNDEzM2I5NWY4NjZjZjA3MzA0MmEyNTMzMzk0OWIxMzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNp
bmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIElTTzg2
MDEgewpAQCAtNzksNiArODAsMTIyIEBAIHByaXZhdGU6CiAgICAgc3RkOjphcnJheTxkb3VibGUs
IG51bWJlck9mVGVtcG9yYWxVbml0cz4gbV9kYXRhIHsgfTsKIH07CiAKK2NsYXNzIEV4YWN0VGlt
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoRXhhY3RUaW1lKTsKK3B1YmxpYzoKKyAg
ICBjb25zdGV4cHIgRXhhY3RUaW1lKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBFeGFjdFRp
bWUoY29uc3QgRXhhY3RUaW1lJikgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBF
eGFjdFRpbWUoSW50MTI4IGVwb2NoTmFub3NlY29uZHMpIDogbV9lcG9jaE5hbm9zZWNvbmRzKGVw
b2NoTmFub3NlY29uZHMpIHsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJv
bUVwb2NoU2Vjb25kcyhpbnQ2NF90IGVwb2NoU2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVy
biBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hTZWNvbmRzIH0gKiBFeGFjdFRpbWU6Om5zUGVyU2Vj
b25kKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBFeGFjdFRpbWUgZnJvbUVwb2NoTWls
bGlzZWNvbmRzKGludDY0X3QgZXBvY2hNaWxsaXNlY29uZHMpCisgICAgeworICAgICAgICByZXR1
cm4gRXhhY3RUaW1lKEludDEyOCB7IGVwb2NoTWlsbGlzZWNvbmRzIH0gKiBFeGFjdFRpbWU6Om5z
UGVyTWlsbGlzZWNvbmQpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIEV4YWN0VGltZSBm
cm9tRXBvY2hNaWNyb3NlY29uZHMoaW50NjRfdCBlcG9jaE1pY3Jvc2Vjb25kcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBFeGFjdFRpbWUoSW50MTI4IHsgZXBvY2hNaWNyb3NlY29uZHMgfSAqIEV4
YWN0VGltZTo6bnNQZXJNaWNyb3NlY29uZCk7CisgICAgfQorICAgIHN0YXRpYyBFeGFjdFRpbWUg
ZnJvbUlTT1BhcnRzQW5kT2Zmc2V0KGludDMyX3QgeSwgdWludDhfdCBtb24sIHVpbnQ4X3QgZCwg
dW5zaWduZWQgaCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBzLCB1bnNpZ25lZCBtcywgdW5zaWdu
ZWQgbWljcm9zLCB1bnNpZ25lZCBucywgaW50NjRfdCBvZmZzZXQpOworCisgICAgaW50NjRfdCBl
cG9jaFNlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBF
eGFjdFRpbWU6Om5zUGVyU2Vjb25kKTsKKyAgICB9CisgICAgaW50NjRfdCBlcG9jaE1pbGxpc2Vj
b25kcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KG1fZXBvY2hOYW5vc2Vjb25kcyAvIEV4YWN0VGlt
ZTo6bnNQZXJNaWxsaXNlY29uZCk7CisgICAgfQorICAgIGludDY0X3QgZXBvY2hNaWNyb3NlY29u
ZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtX2Vwb2NoTmFub3NlY29uZHMgLyBFeGFjdFRpbWU6
Om5zUGVyTWljcm9zZWNvbmQpOworICAgIH0KKyAgICBjb25zdGV4cHIgSW50MTI4IGVwb2NoTmFu
b3NlY29uZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAg
ICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHM7CisgICAgfQorCisgICAgaW50IG5hbm9zZWNv
bmRzRnJhY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4obV9lcG9jaE5hbm9zZWNvbmRzICUgRXhhY3RUaW1lOjpuc1BlclNlY29uZCk7CisgICAgfQor
CisgICAgU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICAgICAgaWYgKG1fZXBvY2hOYW5vc2Vjb25kcyA8IDApIHsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBhc1N0cmluZ0ltcGwoYnVp
bGRlciwgLW1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
YXNTdHJpbmdJbXBsKGJ1aWxkZXIsIG1fZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gSXNWYWxpZEVwb2NoTmFub3Nl
Y29uZHMgKCBlcG9jaE5hbm9zZWNvbmRzICkKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZXBvY2huYW5vc2Vjb25kcworICAgIGNv
bnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBv
Y2hOYW5vc2Vjb25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vjb25k
cyA8PSBFeGFjdFRpbWU6Om1heFZhbHVlOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPChFeGFjdFRpbWUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9l
cG9jaE5hbm9zZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9zZWNv
bmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0gb3Ro
ZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
ciE9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Vwb2No
TmFub3NlY29uZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOworICAgIH0KKyAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRz
OworICAgIH0KKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVyLm1f
ZXBvY2hOYW5vc2Vjb25kczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPEV4YWN0VGltZT4g
YWRkKER1cmF0aW9uKSBjb25zdDsKKyAgICBJbnQxMjggZGlmZmVyZW5jZShFeGFjdFRpbWUgb3Ro
ZXIsIHVuc2lnbmVkIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpIGNvbnN0
OworICAgIEV4YWN0VGltZSByb3VuZCh1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwg
Um91bmRpbmdNb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIElu
dDEyOCBkYXlSYW5nZVNlY29uZHMgeyA4NjQwMCcwMDAwMDAwMCB9OyAvLyAxZTggZGF5cworICAg
IHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWljcm9zZWNvbmQgeyAxMDAwIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBJbnQxMjggbnNQZXJNaWxsaXNlY29uZCB7IDEnMDAwJzAwMCB9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG5zUGVyTWludXRlID0gbnNQZXJTZWNvbmQg
KiA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEludDEyOCBuc1BlckhvdXIgPSBuc1Blck1pbnV0
ZSAqIDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1pblZhbHVlID0gLWRheVJhbmdl
U2Vjb25kcyAqIG5zUGVyU2Vjb25kOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50MTI4IG1heFZh
bHVlID0gZGF5UmFuZ2VTZWNvbmRzICogbnNQZXJTZWNvbmQ7CisKKyAgICBzdGF0aWMgdm9pZCBh
c1N0cmluZ0ltcGwoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSW50MTI4IHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKHZhbHVlID4gOSkKKyAgICAgICAgICAgIGFzU3RyaW5nSW1wbChidWlsZGVy
LCB2YWx1ZSAvIDEwKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHZhbHVlICUgMTApICsgJzAnKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50MTI4IHJvdW5k
KEludDEyOCBxdWFudGl0eSwgdW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5k
aW5nTW9kZSk7CisKKyAgICBJbnQxMjggbV9lcG9jaE5hbm9zZWNvbmRzIHsgfTsKK307CisKIGNs
YXNzIFBsYWluVGltZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1lKTsK
IHB1YmxpYzoKQEAgLTE2OCw1ICsyODUsNyBAQCBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmco
UGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbgogCiBi
b29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCitzdGQ6Om9wdGlvbmFsPEV4
YWN0VGltZT4gcGFyc2VJbnN0YW50KFN0cmluZ1ZpZXcpOworCiB9IC8vIG5hbWVzcGFjZSBJU084
NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggYTUwOWQ5MmQ2M2U5NWJlZjAwNjIwYTMw
NmEzYTU1ZjA0YTY1NjM4Mi4uYzE3ZDdlNzQyMWQxOWU5MDU0ZjU2OTNlNzA4ZDFhMmZmNTg0YjBh
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmgKQEAgLTk0LDYgKzk0LDggQEAgcHJpdmF0ZToKIAogICAgIFVEYXRlSW50ZXJ2YWxG
b3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2JqZWN0
Kik7CiAKKyAgICBzdGF0aWMgZG91YmxlIGhhbmRsZURhdGVUaW1lVmFsdWUoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKKwogICAgIGVudW0gY2xhc3MgV2Vla2RheSA6IHVpbnQ4X3QgeyBOb25l
LCBOYXJyb3csIFNob3J0LCBMb25nIH07CiAgICAgZW51bSBjbGFzcyBFcmEgOiB1aW50OF90IHsg
Tm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xhc3MgWWVhciA6IHVpbnQ4
X3QgeyBOb25lLCBUd29EaWdpdCwgTnVtZXJpYyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAK
aW5kZXggNzU4NGNmMGNmYjEyOWViY2Y4YWJmNDUzZjNlYmVhZjRiOTcxY2YzYi4uNmU0ZDYyNWM1
MDJmMjBjNDNiZjlkNjM4YTJlYjNhODJmODJjMzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGgu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05MCw2ICs5MSwyNyBAQCB2b2lkIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsTwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQog
CisvLyBIYW5kbGVEYXRlVGltZVZhbHVlICggZGF0ZVRpbWVGb3JtYXQsIHggKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaGFuZGxlZGF0ZXRpbWV2
YWx1ZQorZG91YmxlIEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHgpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGlmICh4LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgZGF0ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKKworICAgIC8v
IEZJWE1FOgorICAgIC8vICAtIEFkZCBhbGwgb2YgdGhlIG90aGVyIFRlbXBvcmFsIHR5cGVzCisg
ICAgLy8gIC0gV29yayBpbiBlcG9jaCBuYW5vc2Vjb25kcworICAgIC8vICAtIFJldHVybiBVRGF0
ZUZvcm1hdCBhbmQgVURhdGVJbnRlcnZhbEZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHR5cGUKKyAg
ICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFu
dCo+KHZtLCB4KTsKKyAgICBpZiAoaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIGluc3RhbnQtPmV4
YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIFdURjo6dGltZUNsaXAoeC50b051bWJlcihnbG9iYWxPYmplY3QpKSk7Cit9CisKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRp
bWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMTAwLDE0ICsxMjIsOCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERh
dGVUaW1lLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQg
PSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAK
ICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGRvdWJsZSB2
YWx1ZTsKLQotICAgIGlmIChkYXRlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHZhbHVlID0gZGF0
ZU5vd0ltcGwoKS50b051bWJlcihnbG9iYWxPYmplY3QpOwotICAgIGVsc2UgewotICAgICAgICB2
YWx1ZSA9IFdURjo6dGltZUNsaXAoZGF0ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQor
ICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1
ZShnbG9iYWxPYmplY3QsIGRhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3Jt
YXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlKSkpOwogfQpAQCAtMTU2LDE0ICsxNzIsOCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVu
Y0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0
ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7Ci0gICAgZG91YmxlIHZhbHVlOwotCi0gICAgaWYgKGRhdGUuaXNVbmRlZmluZWQoKSkK
LSAgICAgICAgdmFsdWUgPSBkYXRlTm93SW1wbCgpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gV1RGOjp0aW1lQ2xpcChkYXRlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLSAgICB9CisgICAgZG91YmxlIHZhbHVlID0gSW50bERhdGVUaW1lRm9ybWF0
OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZGF0ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVj
dCwgdmFsdWUpKSk7CiB9CkBAIC0xODUsOSArMTk1LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xvYmFs
T2IKICAgICBpZiAoc3RhcnREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUu
aXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAg
ICBkb3VibGUgc3RhcnREYXRlID0gc3RhcnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBkb3VibGUgc3RhcnREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRl
VGltZVZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUu
dG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGlt
ZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRl
ID4gZW5kRGF0ZSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CkBAIC0yMTIs
OSArMjIyLDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRSYW5nZVRvUGFydHMsIChKU0cKICAgICBpZiAoc3RhcnREYXRlVmFs
dWUuaXNVbmRlZmluZWQoKSB8fCBlbmREYXRlVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBv
ciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfcyk7CiAKLSAgICBkb3VibGUgc3RhcnREYXRlID0gc3Rh
cnREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBkb3VibGUgc3RhcnREYXRl
ID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwg
c3RhcnREYXRlVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0g
ICAgZG91YmxlIGVuZERhdGUgPSBlbmREYXRlVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsK
KyAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVW
YWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMg
bGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5jcHAKaW5kZXggMTc0YjBmOGFlN2ZlZGJiMzI0M2Y0NGFlZGU1NDMwY2JmMmYyNDFi
Mi4uNGI1OTZjMjdhNmIzNGEyMWI5OTQ5N2MxNDc5ZmNmNzY4ZDUwODJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTIzMSw2ICsyMzIsNjIgQEAgSlNC
aWdJbnQqIEpTQmlnSW50OjpjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21JbXBsKGdsb2JhbE9iamVjdCwg
dW5zaWduZWRWYWx1ZSwgc2lnbik7CiB9CiAKK0pTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJv
bShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQxMjggdmFsdWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGlmICghdmFsdWUpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgY3JlYXRlWmVybyhnbG9iYWxPYmplY3QpKTsKKworICAgIFVJbnQxMjggdW5zaWdu
ZWRWYWx1ZTsKKyAgICBib29sIHNpZ24gPSBmYWxzZTsKKyAgICBpZiAodmFsdWUgPCAwKSB7Cisg
ICAgICAgIHVuc2lnbmVkVmFsdWUgPSBzdGF0aWNfY2FzdDxVSW50MTI4PigtKHZhbHVlICsgMSkp
ICsgMTsKKyAgICAgICAgc2lnbiA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIHVuc2lnbmVk
VmFsdWUgPSB2YWx1ZTsKKworICAgIGlmICh1bnNpZ25lZFZhbHVlIDw9IFVJTlQ2NF9NQVgpCisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3JlYXRlRnJvbUltcGwoZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odW5zaWduZWRWYWx1ZSksIHNpZ24pKTsKKworICAg
IGlmIGNvbnN0ZXhwciAoc2l6ZW9mKERpZ2l0KSA9PSA4KSB7CisgICAgICAgIEpTQmlnSW50KiBi
aWdJbnQgPSBjcmVhdGVXaXRoTGVuZ3RoKGdsb2JhbE9iamVjdCwgMik7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgICAgIERpZ2l0IGxvd0JpdHMg
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUp
KTsKKyAgICAgICAgRGlnaXQgaGlnaEJpdHMgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKworICAgICAgICBBU1NFUlQoaGln
aEJpdHMpOworCisgICAgICAgIGJpZ0ludC0+c2V0RGlnaXQoMCwgbG93Qml0cyk7CisgICAgICAg
IGJpZ0ludC0+c2V0RGlnaXQoMSwgaGlnaEJpdHMpOworICAgICAgICBiaWdJbnQtPnNldFNpZ24o
c2lnbik7CisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgfQorCisgICAgQVNTRVJUKHNpemVv
ZihEaWdpdCkgPT0gNCk7CisKKyAgICBEaWdpdCBkaWdpdDAgPSBzdGF0aWNfY2FzdDxEaWdpdD4o
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUpKTsKKyAgICBEaWdpdCBkaWdpdDEg
PSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUg
Pj4gMzIpKTsKKyAgICBEaWdpdCBkaWdpdDIgPSBzdGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4gNjQpKTsKKyAgICBEaWdpdCBkaWdpdDMgPSBz
dGF0aWNfY2FzdDxEaWdpdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVuc2lnbmVkVmFsdWUgPj4g
OTYpKTsKKworICAgIEFTU0VSVChkaWdpdDIgfHwgZGlnaXQzKTsKKworICAgIGludCBsZW5ndGgg
PSBkaWdpdDMgPyA0IDogMzsKKyAgICBKU0JpZ0ludCogYmlnSW50ID0gY3JlYXRlV2l0aExlbmd0
aChnbG9iYWxPYmplY3QsIGxlbmd0aCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CisKKyAgICBiaWdJbnQtPnNldERpZ2l0KDAsIGRpZ2l0MCk7CisgICAgYmlnSW50
LT5zZXREaWdpdCgxLCBkaWdpdDEpOworICAgIGJpZ0ludC0+c2V0RGlnaXQoMiwgZGlnaXQyKTsK
KyAgICBpZiAoZGlnaXQzKQorICAgICAgICBiaWdJbnQtPnNldERpZ2l0KDMsIGRpZ2l0Myk7Cisg
ICAgYmlnSW50LT5zZXRTaWduKHNpZ24pOworICAgIHJldHVybiBiaWdJbnQ7Cit9CisKIEpTQmln
SW50KiBKU0JpZ0ludDo6Y3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBi
b29sIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDg5NjFjMWQ4ZmI2MTAxYWI2OGQ5
NzBmMDJiNzFlZGNiMzM0ZGZkNzguLjg4ZjNjMzkwMzk5MTIyZTIzN2FlMmExODYxMTYzM2I2ZGE2
Nzk0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5o
IgogI2luY2x1ZGUgPHd0Zi9DYWdlZFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9JbnQxMjgu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQs
NiArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xv
YmFsT2JqZWN0KiwgdWludDMyX3QgdmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGludDY0X3QgdmFsdWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2Jh
bE9iamVjdCosIHVpbnQ2NF90IHZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
SlNCaWdJbnQqIGNyZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBJbnQxMjggdmFsdWUpOwogICAg
IHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGJvb2wgdmFsdWUp
OwogICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCosIGRvdWJs
ZSB2YWx1ZSk7CiAKQEAgLTYwNSw4ICs2MDcsNiBAQCBwcml2YXRlOgogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHVpbnQ2NF90IHRvQmlnVUludDY0SGVhcChKU0JpZ0ludCopOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvVWlu
dDY0SGVhcChKU0JpZ0ludCopOwotCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZE
YXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQsIG1f
ZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVN
YXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmlu
ZGV4IGRhZTliM2E5YmM5MmZiYWZkNGUzMDE5NGI0ZDFhOGQ4M2RiZDJjZmYuLjUyMTlmOGY3MjQy
Yjg2Zjk0MGU4MjgyMzU4NGU2MWZlMmJhNDllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBAIC0yNjksMTEgKzI2OSw2IEBAIExvY2FsVGltZU9m
ZnNldCBEYXRlQ2FjaGU6OmxvY2FsVGltZU9mZnNldChkb3VibGUgbWlsbGlzZWNvbmRzRnJvbUVw
b2NoLCBXVEY6OlRpCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc3RhdGljIGlubGluZSBkb3Vi
bGUgdGltZVRvTVMoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW4sIGRvdWJsZSBzZWMsIGRvdWJsZSBt
cykKLXsKLSAgICByZXR1cm4gKCgoaG91ciAqIFdURjo6bWludXRlc1BlckhvdXIgKyBtaW4pICog
V1RGOjpzZWNvbmRzUGVyTWludXRlICsgc2VjKSAqIFdURjo6bXNQZXJTZWNvbmQgKyBtcyk7Ci19
Ci0KIGRvdWJsZSBEYXRlQ2FjaGU6OmdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSYgdCwgZG91YmxlIG1pbGxpc2Vjb25kcywgV1RGOjpUaW1lVHlwZSBpbnB1dFRp
bWVUeXBlKQogewogICAgIGRvdWJsZSBkYXkgPSBkYXRlVG9EYXlzRnJvbTE5NzAodC55ZWFyKCks
IHQubW9udGgoKSwgdC5tb250aERheSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5ZWM5MTJjNWQwOTMwMzBmOTQyMzFiMjhi
OTM4ZDEzNTA3Y2FhMjA0Li41Mjg1MWQ1MTE1ZDc5NzlhYWQ1ZWQ4YTU1YzhjZDA2NDY0ZTdlMTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0yMTAsNiArMjEwLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUuaCIKQEAgLTEyNTQsNiArMTI1NiwxMyBAQCBjYXBpdGFsTmFtZSAj
IyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBj
YXBpdGFsTmFtZQogICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBlKSk7
CiAgICAgICAgICAgICB9KTsKIAorICAgICAgICBtX2luc3RhbnRTdHJ1Y3R1cmUuaW5pdExhdGVy
KAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
KyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlKiBpbnN0YW50UHJvdG90eXBlID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBpbnN0YW50UHJvdG90eXBlKSk7CisgICAgICAg
ICAgICB9KTsKKwogICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAg
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAg
ICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOwpAQCAtMjE2Niw2ICsyMTc1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhp
c09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1faW5zdGFudFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3Bs
YWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3RpbWVa
b25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZTczNjQ0NjMyZjVlYzg5ZmM4YmY1ZDYz
ZmYxMDg2NDZjN2UzMjgwLi5mNjUwYTNkODllZjJhNWUwNWFiY2NhMTkzZTZkNTZjNzQyNmNlNDA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGltZVN0
cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV90
aW1lWm9uZVN0cnVjdHVyZTsKIApAQCAtODkyLDYgKzg5Myw3IEBAIHB1YmxpYzoKIAogICAgIFN0
cnVjdHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogaW5zdGFu
dFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1faW5zdGFudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDkzNGJl
YjA5YTcwYjc2ZmZhMmVjODkzNWNhODc4ZDIwZmM4OWY2NmYuLjI5YjM1NDY2ZDk4ZWZmOWY2NGZk
MDk3OWRjOTAwNzQxYmRmYTdhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjQsNiArMTY1LDMxIEBAIFRlbXBvcmFs
RHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQog
CisvLyBUb0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uICggdGVtcG9yYWxEdXJhdGlvbkxpa2UsIGRp
c2FsbG93ZWRGaWVsZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorSVNPODYwMTo6RHVyYXRpb24g
VGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3Jh
bFVuaXQ+IGRpc2FsbG93ZWRVbml0cykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSVNP
ODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSB0b0lTTzg2MDFEdXJhdGlvbihnbG9iYWxPYmplY3Qs
IGl0ZW1WYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGlmICghaXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVz
dCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorCisgICAgZm9yIChUZW1wb3JhbFVuaXQgdW5pdCA6IGRpc2FsbG93ZWRVbml0
cykgeworICAgICAgICBpZiAoZHVyYXRpb25bdW5pdF0pIHsKKyAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCJBZGRpbmcgIl9zLCB0ZW1w
b3JhbFVuaXRQbHVyYWxQcm9wZXJ0eU5hbWUodm0sIHVuaXQpLnB1YmxpY05hbWUoKSwgIiBub3Qg
c3VwcG9ydGVkIGJ5IFRlbXBvcmFsLkluc3RhbnQuIFRyeSBUZW1wb3JhbC5ab25lZERhdGVUaW1l
IGluc3RlYWQiX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFs
RHVyYXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVt
VmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCmluZGV4IDgyZjJkNWQ2
NWMyMmFjNGM0MDdjODYzNDM0MmZmNjY5Y2EwYTE4OTYuLmQyNzcyMDljZGRkNzc1YjExNWQxN2Qx
ZTFjZWZjMTQyNzdkNDgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfSU5GTzsKIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uKiB0b1RlbXBvcmFsRHVyYXRp
b24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RHVyYXRp
b24gdG9MaW1pdGVkRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0PiBkaXNhbGxvd2VkVW5pdHMpOwogICAgIHN0YXRpYyBU
ZW1wb3JhbER1cmF0aW9uKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3Rh
dGljIEpTVmFsdWUgY29tcGFyZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iOWM0ZGVmOGI1YmY3ZTdlNGMxZjhlMDM1Njc4NjMyY2Y4M2ZmMTI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJ
bnN0YW50LmNwcApAQCAtMCwwICsxLDQ2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxJbnN0YW50LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklTTzg2MDEu
aCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQmlnSW50Lmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIFRlbXBvcmFsSW5zdGFudDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbElu
c3RhbnQpIH07CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
K3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisK
K1RlbXBvcmFsSW5zdGFudDo6VGVtcG9yYWxJbnN0YW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgLCBtX2V4YWN0VGltZShleGFjdFRpbWUpCit7Cit9CisKK1RlbXBvcmFsSW5z
dGFudCogVGVtcG9yYWxJbnN0YW50OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6RXhhY3RUaW1lIGV4YWN0VGltZSkKK3sKKyAgICBBU1NFUlQoZXhhY3RUaW1l
LmlzVmFsaWQoKSk7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxJbnN0YW50Pih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50KHZtLCBzdHJ1Y3R1
cmUsIGV4YWN0VGltZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxJbnN0YW50ICggZXBvY2hOYW5vc2Vj
b25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxpbnN0YW50CitUZW1wb3JhbEluc3RhbnQq
IFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFleGFjdFRpbWUuaXNWYWxpZCgp
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3Ry
aW5nKGV4YWN0VGltZS5hc1N0cmluZygpLCAiIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNpZGUg
b2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/
IHN0cnVjdHVyZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUp
OworfQorCitUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6dHJ5Q3JlYXRlSWZWYWxp
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBlcG9jaE5h
bm9zZWNvbmRzID0gdmFsdWUudG9CaWdJbnQoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAo
ZXBvY2hOYW5vc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCB0b3RhbCA9
IGVwb2NoTmFub3NlY29uZHMuYmlnSW50MzJBc0ludDMyKCk7CisgICAgICAgIElTTzg2MDE6OkV4
YWN0VGltZSBleGFjdFRpbWUgeyB0b3RhbCB9OworICAgICAgICBBU1NFUlQoZXhhY3RUaW1lLmlz
VmFsaWQoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVy
ZSA6IGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworICAgIH0K
KyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVhcEJpZ0ludChlcG9jaE5hbm9z
ZWNvbmRzKTsKKyAgICBib29sIGJpZ0ludFRvb0xvbmcgPSBmYWxzZTsKKyAgICBJbnQxMjggdG90
YWw7CisgICAgaWYgY29uc3RleHByIChzaXplb2YoSlNCaWdJbnQ6OkRpZ2l0KSA9PSA0KSB7Cisg
ICAgICAgIEludDEyOCBkMCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAwID8gYmlnaW50LT5kaWdpdCgw
KSA6IDAgfTsKKyAgICAgICAgSW50MTI4IGQxIHsgYmlnaW50LT5sZW5ndGgoKSA+IDEgPyBiaWdp
bnQtPmRpZ2l0KDEpIDogMCB9OworICAgICAgICBJbnQxMjggZDIgeyBiaWdpbnQtPmxlbmd0aCgp
ID4gMiA/IGJpZ2ludC0+ZGlnaXQoMikgOiAwIH07CisgICAgICAgIHRvdGFsID0gZDIgPDwgNjQg
fCBkMSA8PCAzMiB8IGQwOworICAgICAgICBiaWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgo
KSA+IDM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKHNpemVvZihKU0JpZ0ludDo6RGln
aXQpID09IDgpOworICAgICAgICAvLyBIYW5kbGUgbWF4aW50MTI4IDwgYWJzKGJpZ2ludCkgPD0g
bWF4dWludDEyOCBleHBsaWNpdGx5LCBvdGhlcndpc2UKKyAgICAgICAgLy8gdGhlIGludDEyOCBh
cml0aG1ldGljIGJlbG93IGlzIHVuZGVmaW5lZAorICAgICAgICBpZiAoYmlnaW50LT5sZW5ndGgo
KSA+IDEgJiYgKGJpZ2ludC0+ZGlnaXQoMSkgJiAweDgwMDAnMDAwMCcwMDAwJzAwMDApKSB7Cisg
ICAgICAgICAgICB0b3RhbCA9IDA7CisgICAgICAgICAgICBiaWdJbnRUb29Mb25nID0gdHJ1ZTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEludDEyOCBsb3cgeyBiaWdpbnQtPmxlbmd0
aCgpID4gMCA/IGJpZ2ludC0+ZGlnaXQoMCkgOiAwIH07CisgICAgICAgICAgICBJbnQxMjggaGln
aCB7IGJpZ2ludC0+bGVuZ3RoKCkgPiAxID8gYmlnaW50LT5kaWdpdCgxKSA6IDAgfTsKKyAgICAg
ICAgICAgIHRvdGFsID0gaGlnaCA8PCA2NCB8IGxvdzsKKyAgICAgICAgICAgIGJpZ0ludFRvb0xv
bmcgPSBiaWdpbnQtPmxlbmd0aCgpID4gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBJU084NjAx
OjpFeGFjdFRpbWUgZXhhY3RUaW1lIHsgdG90YWwgKiAoYmlnaW50LT5zaWduKCkgPyAtMSA6IDEp
IH07CisKKyAgICBpZiAoYmlnSW50VG9vTG9uZyB8fCAhZXhhY3RUaW1lLmlzVmFsaWQoKSkgewor
ICAgICAgICBTdHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVj
dCwgMTApOworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2
ZW4gbnVtYmVyIG9mIl9zOworICAgICAgICB9CisKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmlu
ZyksICIgZXBvY2ggbmFub3NlY29uZHMgaXMgb3V0c2lkZSBvZiB0aGUgc3VwcG9ydGVkIHJhbmdl
IGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSA/IHN0cnVjdHVyZSA6IGdsb2Jh
bE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBleGFjdFRpbWUpOworfQorCisvLyBUb1RlbXBv
cmFsSW5zdGFudCAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbGluc3RhbnQKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9y
YWxJbnN0YW50Ojp0b0luc3RhbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBpdGVtVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUu
aW5oZXJpdHM8VGVtcG9yYWxJbnN0YW50Pih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4oaXRlbVZhbHVlKTsKKworICAgIC8vIEZJWE1FOiB3aGVuIFRlbXBvcmFs
LlpvbmVkRGF0ZVRpbWUgbGFuZHMKKyAgICAvLyBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBv
cmFsWm9uZWREYXRlVGltZT4odm0pKQorICAgIC8vICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGpzQ2FzdDxUZW1w
b3JhbFpvbmVkRGF0ZVRpbWUqPihpdGVtVmFsdWUpLT5lcG9jaFRpbWUoKSk7CisKKyAgICBTdHJp
bmcgc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvIHBhcnNlZEV4YWN0
VGltZSA9IElTTzg2MDE6OnBhcnNlSW5zdGFudChzdHJpbmcpOworICAgIGlmICghcGFyc2VkRXhh
Y3RUaW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBt
YWtlU3RyaW5nKCInIl9zLCBlbGxpcHNpemVBdCgxMDAsIHN0cmluZyksICInIGlzIG5vdCBhIHZh
bGlkIFRlbXBvcmFsLkluc3RhbnQgc3RyaW5nIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ5Q3JlYXRlSWZWYWxp
ZChnbG9iYWxPYmplY3QsIHBhcnNlZEV4YWN0VGltZS52YWx1ZSgpKSk7Cit9CisKKy8vIFRlbXBv
cmFsLkluc3RhbnQuZnJvbSAoIGl0ZW0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tCitUZW1wb3JhbEluc3RhbnQqIFRlbXBv
cmFsSW5zdGFudDo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0
ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAo
aXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsSW5zdGFudD4odm0pKSB7CisgICAgICAgIElTTzg2
MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4oaXRlbVZh
bHVlKS0+ZXhhY3RUaW1lKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnQ6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnN0YW50U3RydWN0dXJlKCksIGV4YWN0VGltZSk7CisgICAg
fQorCisgICAgcmV0dXJuIHRvSW5zdGFudChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7Cit9CisK
Ky8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcyAoIGVwb2NoU2Vjb25kcyApCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5pbnN0YW50
LmZyb21lcG9jaHNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9t
RXBvY2hTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZXBvY2hT
ZWNvbmRzVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBlcG9jaFNl
Y29uZHMgPSBlcG9jaFNlY29uZHNWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgLy8gTnVtYmVyVG9CaWdJ
bnQgc3RlcCAxCisgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hTZWNvbmRzKSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlcG9jaFNlY29u
ZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIgb2YgZXBvY2ggc2Vjb25kcyJfcykp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJU084NjAxOjpFeGFjdFRp
bWUgZXhhY3RUaW1lID0gSVNPODYwMTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hTZWNvbmRzKGVwb2No
U2Vjb25kcyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgZXhhY3RUaW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJv
bUVwb2NoTWlsbGlzZWNvbmRzICggZXBvY2hNaWxsaXNlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWxs
aXNlY29uZHMKK1RlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWxs
aXNlY29uZHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pbGxp
c2Vjb25kc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgZXBvY2hN
aWxsaXNlY29uZHMgPSBlcG9jaE1pbGxpc2Vjb25kc1ZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICAvLyBO
dW1iZXJUb0JpZ0ludCBzdGVwIDEKKyAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vjb25k
cykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VT
dHJpbmcoZXBvY2hNaWxsaXNlY29uZHMsICIgaXMgbm90IGEgdmFsaWQgaW50ZWdlciBudW1iZXIg
b2YgZXBvY2ggbWlsbGlzZWNvbmRzIl9zKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRp
bWU6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhlcG9jaE1pbGxpc2Vjb25kcyk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCB0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXhhY3RU
aW1lKSk7Cit9CisKKy8vIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzICgg
ZXBvY2hNaWNyb3NlY29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwuaW5zdGFudC5mcm9tZXBvY2htaWNyb3NlY29uZHMKK1RlbXBvcmFsSW5z
dGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBlcG9jaE1pY3Jvc2Vjb25kc1ZhbHVlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGVwb2NoTWljcm9zZWNvbmRzID0gZXBvY2hN
aWNyb3NlY29uZHNWYWx1ZS50b0JpZ0ludChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisjaWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChl
cG9jaE1pY3Jvc2Vjb25kcy5pc0JpZ0ludDMyKCkpIHsKKyAgICAgICAgaW50MzJfdCBtaWNyb3Nl
Y29uZHMgPSBlcG9jaE1pY3Jvc2Vjb25kcy5iaWdJbnQzMkFzSW50MzIoKTsKKyAgICAgICAgYXV0
byBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyht
aWNyb3NlY29uZHMpOworICAgICAgICBBU1NFUlQoZXhhY3RUaW1lLmlzVmFsaWQoKSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBl
eGFjdFRpbWUpOworICAgIH0KKyNlbmRpZgorCisgICAgSlNCaWdJbnQqIGJpZ2ludCA9IGFzSGVh
cEJpZ0ludChlcG9jaE1pY3Jvc2Vjb25kcyk7CisgICAgYm9vbCBiaWdJbnRUb29Mb25nOworICAg
IGlmIGNvbnN0ZXhwciAoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gNCkgeworICAgICAgICBi
aWdJbnRUb29Mb25nID0gYmlnaW50LT5sZW5ndGgoKSA+IDI7CisgICAgICAgIC8vIEhhbmRsZSBt
YXhpbnQ2NCA8IGFicyhiaWdpbnQpIDw9IG1heHVpbnQ2NCBleHBsaWNpdGx5LCBvdGhlcndpc2Ug
dGhlCisgICAgICAgIC8vIGNhc3QgdG8gaW50NjQgYmVsb3cgaXMgdW5kZWZpbmVkCisgICAgICAg
IGlmIChiaWdpbnQtPmxlbmd0aCgpID09IDIgJiYgKGJpZ2ludC0+ZGlnaXQoMSkgJiAweDgwMDAn
MDAwMCkpCisgICAgICAgICAgICBiaWdJbnRUb29Mb25nID0gdHJ1ZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQoc2l6ZW9mKEpTQmlnSW50OjpEaWdpdCkgPT0gOCk7CisgICAgICAgIGJp
Z0ludFRvb0xvbmcgPSBiaWdpbnQtPmxlbmd0aCgpID4gMTsKKyAgICAgICAgLy8gSGFuZGxlIG1h
eGludDY0IDwgYWJzKGJpZ2ludCkgPD0gbWF4dWludDY0IGV4cGxpY2l0bHksIG90aGVyd2lzZSB0
aGUKKyAgICAgICAgLy8gY2FzdCB0byBpbnQ2NCBiZWxvdyBpcyB1bmRlZmluZWQKKyAgICAgICAg
aWYgKGJpZ2ludC0+bGVuZ3RoKCkgPT0gMSAmJiAoYmlnaW50LT5kaWdpdCgwKSAmIDB4ODAwMCcw
MDAwJzAwMDAnMDAwMCkpCisgICAgICAgICAgICBiaWdJbnRUb29Mb25nID0gdHJ1ZTsKKyAgICB9
CisgICAgaW50NjRfdCBtaWNyb3NlY29uZHMgPSBiaWdJbnRUb29Mb25nID8gMCA6IEpTQmlnSW50
Ojp0b0JpZ0ludDY0KGJpZ2ludCk7CisgICAgYXV0byBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFj
dFRpbWU6OmZyb21FcG9jaE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOworCisgICAgaWYgKGJp
Z0ludFRvb0xvbmcgfHwgIWV4YWN0VGltZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgU3RyaW5nIGFy
Z0FzU3RyaW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKKyAgICAgICAg
aWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlv
bigpOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJfczsK
KyAgICAgICAgfQorCisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBtYWtlU3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJnQXNTdHJpbmcpLCAiIGVwb2NoIG1pY3Jv
c2Vjb25kcyBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFu
dCJfcykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKSwgZXhhY3RUaW1lKTsKK30K
KworLy8gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hOYW5vc2Vjb25kcyAoIGVwb2NoTmFub3Nl
Y29uZHMgKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwuaW5zdGFudC5mcm9tZXBvY2huYW5vc2Vjb25kcworVGVtcG9yYWxJbnN0YW50KiBUZW1wb3Jh
bEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKQoreworICAgIHJldHVybiB0cnlDcmVh
dGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgZXBvY2hOYW5vc2Vjb25kc1ZhbHVlKTsKK30KKworLy8g
VGVtcG9yYWwuSW5zdGFudC5jb21wYXJlICggb25lLCB0d28gKQorLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5jb21wYXJlCitKU1ZhbHVl
IFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9uZVZhbHVlLCBKU1ZhbHVlIHR3b1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG9uZSA9IHRvSW5zdGFudChnbG9iYWxPYmplY3QsIG9u
ZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVt
cG9yYWxJbnN0YW50KiB0d28gPSB0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCB0d29WYWx1ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChvbmUtPmV4YWN0
VGltZSgpID4gdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKDEpOwor
ICAgIGlmIChvbmUtPmV4YWN0VGltZSgpIDwgdHdvLT5leGFjdFRpbWUoKSkKKyAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKC0xKTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7Cit9CisKK0lTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsSW5zdGFudDo6ZGlmZmVyZW5jZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZW1wb3JhbEluc3RhbnQqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkg
Y29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBp
bnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1w
b3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgfSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0
ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIFRl
bXBvcmFsVW5pdCBkZWZhdWx0TGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihzbWFsbGVzdFVuaXQsIFRl
bXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RV
bml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyB9LCBkZWZhdWx0TGFyZ2VzdFVuaXQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IGxhcmdl
c3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihkZWZhdWx0TGFyZ2VzdFVuaXQpOworCisgICAgaWYg
KHNtYWxsZXN0ICYmIGxhcmdlc3QgJiYgc21hbGxlc3QgPCBsYXJnZXN0KSB7CisgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUg
c21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVtcG9yYWxSb3VuZGluZ01vZGUo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1h
eEluY3JlbWVudCA9IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpOworICAg
IEFTU0VSVChtYXhJbmNyZW1lbnQgJiYgKm1heEluY3JlbWVudCA8PSAxMDAwKTsgLy8gdW5ib3Vu
ZGVkIGluY3JlbWVudHMgYXJlIGltcG9zc2libGUgd2l0aCBUZW1wb3JhbC5JbnN0YW50CisgICAg
dW5zaWduZWQgaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIG1heEluY3JlbWVudCwgZmFsc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBJbnQxMjggcm91bmRlZERpZmYgPSBleGFjdFRpbWUoKS5k
aWZmZXJlbmNlKG90aGVyLT5leGFjdFRpbWUoKSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJv
dW5kaW5nTW9kZSk7CisgICAgLy8gTk9URTogRHVyYXRpb24gZmllbGRzIGFyZSBjdXJyZW50bHkg
ZG91YmxlcywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YKKyAgICAvLyBuYW5vc2Vjb25kcyBtYXkg
bm90IGZpdCBpbiBhIGRvdWJsZS4gVGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UgaWYgdGhlCisgICAg
Ly8gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgRHVyYXRpb24gY2hhbmdlcy4KKyAgICBBU1NF
UlQocm91bmRlZERpZmYgLyAxJzAwMCcwMDAnMDAwIDwgSU5UNjRfTUFYKTsKKyAgICBkb3VibGUg
c2Vjb25kcyB7IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50NjRfdD4ocm91bmRl
ZERpZmYgLyAxJzAwMCcwMDAnMDAwKSkgfTsKKyAgICBkb3VibGUgbmFub3NlY29uZHNSZW1haW5k
ZXIgeyBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludDY0X3Q+KHJvdW5kZWREaWZm
ICUgMScwMDAnMDAwJzAwMCkpIH07CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0IHsgMCwg
MCwgMCwgMCwgMCwgMCwgc2Vjb25kcywgMCwgMCwgbmFub3NlY29uZHNSZW1haW5kZXIgfTsKKwor
ICAgIFRlbXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGRvdWJsZSBtYXhpbXVtSW5jcmVtZW50KFRlbXBv
cmFsVW5pdCBzbWFsbGVzdFVuaXQpCit7CisgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQpIHsKKyAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogcmV0dXJuIDI0OworICAgIGNhc2UgVGVtcG9yYWxV
bml0OjpNaW51dGU6IHJldHVybiAxNDQwOworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6
IHJldHVybiA4NjQwMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHJldHVy
biA4LjY0ZTc7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiByZXR1cm4gOC42
NGUxMDsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogcmV0dXJuIDguNjRlMTM7
CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlllYXI6CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1v
bnRoOgorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpXZWVrOgorICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpEYXk6CisgICAgZGVmYXVsdDoKKyAgICAgICAgeyB9CisgICAgfQorICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0lTTzg2MDE6OkV4YWN0VGltZSBUZW1wb3JhbEluc3Rh
bnQ6OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9u
cyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9
IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVu
aXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9y
YWxVbml0OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3Mp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RV
bml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAg
IFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUgPSB0ZW1wb3JhbFJvdW5kaW5nTW9kZShnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGRvdWJsZSBpbmNyZW1lbnQgPSB0ZW1wb3Jh
bFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bUluY3JlbWVu
dChzbWFsbGVzdFVuaXQpLCB0cnVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgcmV0dXJuIGV4YWN0VGltZSgpLnJvdW5kKGluY3JlbWVudCwgc21hbGxlc3RV
bml0LCByb3VuZGluZ01vZGUpOworfQorCisvLyBUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50
b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5cGUudG9zdHJpbmcKK1N0cmluZyBUZW1w
b3JhbEluc3RhbnQ6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09i
amVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9u
c1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYg
KCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIEpTT2JqZWN0KiB0
aW1lWm9uZSA9IG51bGxwdHI7CisgICAgSlNWYWx1ZSB0aW1lWm9uZVZhbHVlID0gb3B0aW9ucy0+
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgdGltZVpvbmUgPSBUZW1wb3JhbFRpbWVab25lOjpmcm9tKGds
b2JhbE9iamVjdCwgdGltZVpvbmVWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0
cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlID0gdGVt
cG9yYWxSb3VuZGluZ01vZGUoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBSb3VuZGluZ01vZGU6OlRy
dW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8g
bmVlZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1
bHRzLgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpB
dXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1
cm4gdG9TdHJpbmcodGltZVpvbmUpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0
VGltZSB7IGV4YWN0VGltZSgpLnJvdW5kKGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5k
aW5nTW9kZSkgfTsKKworICAgIC8vIEZJWE1FOiBNaXNzaW5nLCByZWxpZXMgb24gVGltZVpvbmU6
CisgICAgLy8gMS4gTGV0IHJvdW5kZWRJbnN0YW50IGJlICEgQ3JlYXRlVGVtcG9yYWxJbnN0YW50
KHJvdW5kZWROcykuCisgICAgLy8gLi4uCisgICAgLy8gMS4gSWYgX291dHB1dFRpbWVab25lXyBp
cyAqdW5kZWZpbmVkKiwgdGhlbgorICAgIC8vICAgMS4gU2V0IF9vdXRwdXRUaW1lWm9uZV8gdG8g
ISBDcmVhdGVUZW1wb3JhbFRpbWVab25lKCoiVVRDIiopLgorICAgIC8vIDEuIExldCBfaXNvQ2Fs
ZW5kYXJfIGJlICEgR2V0SVNPODYwMUNhbGVuZGFyKCkuCisgICAgLy8gMS4gTGV0IF9kYXRlVGlt
ZV8gYmUgPyBCdWlsdGluVGltZVpvbmVHZXRQbGFpbkRhdGVUaW1lRm9yKF9vdXRwdXRUaW1lWm9u
ZV8sIF9pbnN0YW50XywgX2lzb0NhbGVuZGFyXykuCisgICAgSlNPYmplY3QqIG91dHB1dFRpbWVa
b25lID0gdGltZVpvbmU7CisgICAgaWYgKG91dHB1dFRpbWVab25lKSB7CisgICAgICAgIHRocm93
Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6IFRlbXBvcmFsLkluc3RhbnQudG9T
dHJpbmcoe3RpbWVab25lfSkgbm90IGltcGxlbWVudGVkIHlldCJfcyk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCisgICAgcmV0dXJuIHRvU3RyaW5nKG5ld0V4YWN0VGltZSwgdGltZVpv
bmUsIGRhdGEpOworfQorCisvLyBUZW1wb3JhbEluc3RhbnRUb1N0cmluZyAoIGluc3RhbnQsIHRp
bWVab25lLCBwcmVjaXNpb24gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxpbnN0YW50dG9zdHJpbmcKK1N0cmluZyBUZW1wb3JhbElu
c3RhbnQ6OnRvU3RyaW5nKElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUsIEpTT2JqZWN0KiB0
aW1lWm9uZSwgUHJlY2lzaW9uRGF0YSBwcmVjaXNpb24pCit7CisgICAgR3JlZ29yaWFuRGF0ZVRp
bWUgZ3JlZ29yaWFuRGF0ZVRpbWUgeyBzdGF0aWNfY2FzdDxkb3VibGU+KGV4YWN0VGltZS5lcG9j
aE1pbGxpc2Vjb25kcygpKSwgTG9jYWxUaW1lT2Zmc2V0IHsgfSB9OworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKworICAgIC8vIElmIHRoZSB5ZWFyIGlzIG91dHNpZGUgdGhlIGJvdW5kcyBv
ZiAxMDAwIGFuZCA5OTk5IGluY2x1c2l2ZSB3ZSB3YW50IHRvCisgICAgLy8gdXNlIHRoZSBleHRl
bmRlZCB5ZWFyIGZvcm1hdCAoUGFkSVNPWWVhcikuCisgICAgdW5zaWduZWQgeWVhckxlbmd0aCA9
IDQ7CisgICAgaWYgKGdyZWdvcmlhbkRhdGVUaW1lLnllYXIoKSA+IDk5OTkgfHwgZ3JlZ29yaWFu
RGF0ZVRpbWUueWVhcigpIDwgMTAwMCkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChncmVnb3Jp
YW5EYXRlVGltZS55ZWFyKCkgPCAwID8gJy0nIDogJysnKTsKKyAgICAgICAgeWVhckxlbmd0aCA9
IDY7CisgICAgfQorCisgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhwYWQoJzAnLCB5ZWFy
TGVuZ3RoLCBzdGQ6OmFicyhncmVnb3JpYW5EYXRlVGltZS55ZWFyKCkpKSwKKyAgICAgICAgJy0n
LCBwYWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5tb250aCgpICsgMSksCisgICAgICAgICct
JywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUubW9udGhEYXkoKSksCisgICAgICAgICdU
JywgcGFkKCcwJywgMiwgZ3JlZ29yaWFuRGF0ZVRpbWUuaG91cigpKSwKKyAgICAgICAgJzonLCBw
YWQoJzAnLCAyLCBncmVnb3JpYW5EYXRlVGltZS5taW51dGUoKSkpKTsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IG5zUGVyU2Vjb25kIHsgMScwMDAnMDAwJzAwMCB9OworICAgIGludCBmcmFj
dGlvbiB7IGV4YWN0VGltZS5uYW5vc2Vjb25kc0ZyYWN0aW9uKCkgfTsKKyAgICBpZiAoZnJhY3Rp
b24gPCAwKQorICAgICAgICBmcmFjdGlvbiArPSBuc1BlclNlY29uZDsKKworICAgIGZvcm1hdFNl
Y29uZHNTdHJpbmdQYXJ0KGJ1aWxkZXIsIGdyZWdvcmlhbkRhdGVUaW1lLnNlY29uZCgpLCBmcmFj
dGlvbiwgcHJlY2lzaW9uKTsKKworICAgIGlmICh0aW1lWm9uZSkgeworICAgICAgICAvLyBGSVhN
RTogTWlzc2luZywgcmVsaWVzIG9uIFRpbWVab25lOgorICAgICAgICAvLyAgIDEuIExldCBfdGlt
ZVpvbmVTdHJpbmdfIGJlID8gQnVpbHRpblRpbWVab25lR2V0T2Zmc2V0U3RyaW5nRm9yKF90aW1l
Wm9uZV8sIF9pbnN0YW50XykuCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisgICAgfSBl
bHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdaJyk7CisKKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGRkZmEyZjk4ZjA5
MzdjN2VmYTNhZDQwNTZjMzliYTEyNmEzOWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5oCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9QYWNrZWQuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFRlbXBvcmFsSW5zdGFudCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHZtLnRlbXBvcmFsSW5zdGFudFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGlj
IFRlbXBvcmFsSW5zdGFudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RXhhY3RU
aW1lKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xv
YmFsT2JqZWN0KiwgSVNPODYwMTo6RXhhY3RUaW1lLCBTdHJ1Y3R1cmUqID0gbnVsbHB0cik7Cisg
ICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUsIFN0cnVjdHVyZSogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogdG9JbnN0YW50KEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudCogZnJv
bShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0YXRpYyBUZW1wb3JhbEluc3RhbnQq
IGZyb21FcG9jaFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMg
VGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWxsaXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50KiBmcm9tRXBvY2hNaWNyb3NlY29u
ZHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50
KiBmcm9tRXBvY2hOYW5vc2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworICAgIHN0
YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsK
KworICAgIElTTzg2MDE6OkV4YWN0VGltZSBleGFjdFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2V4
YWN0VGltZS5nZXQoKTsgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZShKU0ds
b2JhbE9iamVjdCosIFRlbXBvcmFsSW5zdGFudCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7Cisg
ICAgSVNPODYwMTo6RXhhY3RUaW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRp
b25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU09iamVjdCogdGltZVpvbmUg
PSBudWxscHRyLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbiA9IHsgeyBQcmVjaXNpb246OkF1dG8s
IDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH0pIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gdG9TdHJpbmcoZXhhY3RUaW1lKCksIHRpbWVab25lLCBwcmVjaXNpb24pOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbEluc3RhbnQoVk0mLCBTdHJ1Y3R1cmUqLCBJU084
NjAxOjpFeGFjdFRpbWUpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IHBhcnNlKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6RXhh
Y3RUaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhJU084NjAxOjpFeGFjdFRpbWUsIEpTT2JqZWN0KiB0aW1lWm9u
ZSwgUHJlY2lzaW9uRGF0YSk7CisKKyAgICBQYWNrZWQ8SVNPODYwMTo6RXhhY3RUaW1lPiBtX2V4
YWN0VGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJhYTQyODBhMWNlNjcwOTBhNjc4MTNjMjE4NjViMmM1ZTNlZWI2NWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpOworCitz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
ckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWls
bGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jvc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBv
Y2hOYW5vc2Vjb25kcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yVGFibGUsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IpIH07CisK
Ky8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgICAgICAg
dGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaFNlY29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50
Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoU2Vjb25kcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CisgIGZyb21FcG9jaE1pbGxpc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5j
RnJvbUVwb2NoTWlsbGlzZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE1p
Y3Jvc2Vjb25kcyAgdGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTWljcm9z
ZWNvbmRzICBEb250RW51bXxGdW5jdGlvbiAxCisgIGZyb21FcG9jaE5hbm9zZWNvbmRzICAgdGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMgICBEb250RW51
bXxGdW5jdGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3JGdW5jQ29tcGFyZSAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitA
ZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvciogVGVtcG9yYWxJbnN0YW50Q29u
c3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFudFByb3RvdHlwZSk7Cisg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9u
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxJbnN0YW50KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5zdGFudCk7CisKK1RlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yOjpUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxJbnN0
YW50LCBjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0
YW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlKiBpbnN0YW50UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAxLCAiSW5zdGFudCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBpbnN0YW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CisgICAgaW5zdGFudFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUt
Pm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZF
RF9TVFJVQ1RVUkUodm0sIGluc3RhbnRTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
aWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hO
YW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6dHJ5
Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCksIHN0cnVjdHVyZSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1w
b3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnN0YW50IikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yRnVuY0Zyb21FcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaFNlY29uZHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3RvckZ1bmNGcm9tRXBvY2hNaWxsaXNlY29uZHMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE1pbGxpc2Vjb25kcyhn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yRnVuY0Zyb21FcG9jaE1pY3Jv
c2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsSW5zdGFudDo6ZnJv
bUVwb2NoTWljcm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50Q29uc3RydWN0
b3JGdW5jRnJvbUVwb2NoTmFub3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbEluc3RhbnQ6OmZyb21FcG9jaE5hbm9zZWNvbmRzKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsSW5zdGFudDo6Y29tcGFyZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxJbnN0YW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDk4N2Q5ZGUzMjAxYjJjODNhZjNk
ZWRlMmEyMTg5NWE4ZjJmNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNT
dGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLCBJbnRl
cm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZDk4Y2FiYjIwMDU0NWJkNDdhNTQyMmVjOGE4ZWVmNWZmMjMzMGZkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0Fk
ZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9Mb2Nh
bGVTdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVw
b2NoTWlsbGlzZWNvbmRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRlckVwb2No
TmFub3NlY29uZHMpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
bHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3JhbC5JbnN0YW50IiwgJkJhc2U6OnNfaW5m
bywgJmluc3RhbnRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gaW5zdGFudFByb3RvdHlwZVRhYmxlCisgIGFkZCAg
ICAgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgICAgdGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgdW50aWwgICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNVbnRp
bCAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAgICAgICAg
ICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlRnVuY1JvdW5kICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxz
ICAgICAgICAgICAgIHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHRvU3RyaW5nICAgICAgICAgICB0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAorICB0b0pTT04gICAgICAgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvSlNP
TiAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICAg
IHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgICBEb250RW51
bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5
cGVGdW5jVmFsdWVPZiAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBlcG9jaFNl
Y29uZHMgICAgICAgdGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzICAg
ICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGVwb2NoTWlsbGlzZWNvbmRz
ICB0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcyAgRG9udEVu
dW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXBvY2hNaWNyb3NlY29uZHMgIHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUdldHRlckVwb2NoTWljcm9zZWNvbmRzICBEb250RW51bXxSZWFkT25s
eXxDdXN0b21BY2Nlc3NvcgorICBlcG9jaE5hbm9zZWNvbmRzICAgdGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25kcyAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFj
Y2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxJ
bnN0YW50UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZTo6VGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgc3RkOjppbml0aWFsaXplcl9s
aXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMgPSB7CisgICAgVGVtcG9y
YWxVbml0OjpZZWFyLAorICAgIFRlbXBvcmFsVW5pdDo6TW9udGgsCisgICAgVGVtcG9yYWxVbml0
OjpXZWVrLAorICAgIFRlbXBvcmFsVW5pdDo6RGF5LAorfTsKKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFu
dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIEluc3RhbnQiX3MpOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24gPSBUZW1w
b3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgc3RkOjpvcHRpb25hbDxJU084NjAxOjpFeGFjdFRp
bWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgpLmFkZChkdXJhdGlvbik7Cisg
ICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3Ig
VGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50
Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgKm5ld0V4YWN0VGltZSkpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNTdWJ0
cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJh
Y3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIElTTzg2
MDE6OkR1cmF0aW9uIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9MaW1pdGVkRHVyYXRp
b24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBkaXNhbGxvd2VkQWRkaXRp
b25Vbml0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHN0
ZDo6b3B0aW9uYWw8SVNPODYwMTo6RXhhY3RUaW1lPiBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5l
eGFjdFRpbWUoKS5hZGQoLWR1cmF0aW9uKTsKKyAgICBpZiAoIW5ld0V4YWN0VGltZSkgeworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlz
IG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFs
T2JqZWN0LCAqbmV3RXhhY3RUaW1lKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5z
dGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWluc3RhbnQpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5z
dGFudDo6dG9JbnN0YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgb3B0aW9u
cyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSVNPODYwMTo6RHVyYXRpb24gcmVzdWx0
ID0gaW5zdGFudC0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBvcHRpb25zKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRp
b25TdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5z
dGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVt
cG9yYWxJbnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1
ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBJU084NjAxOjpEdXJhdGlv
biByZXN1bHQgPSBvdGhlci0+ZGlmZmVyZW5jZShnbG9iYWxPYmplY3QsIGluc3RhbnQsIG9wdGlv
bnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQi
X3MpOworCisgICAgSVNPODYwMTo6RXhhY3RUaW1lIG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJv
dW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW5zdGFudFN0cnVjdHVyZSgpLCBuZXdFeGFjdFRpbWUp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCog
aW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBl
LmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAg
VGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlu
c3RhbnQtPmV4YWN0VGltZSgpID09IG90aGVyLT5leGFjdFRpbWUoKSkpOworfQorCisvLyBUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyggWyBvcHRpb25zIF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwuaW5zdGFudC5wcm90b3R5
cGUudG9zdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5z
dGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5z
dGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
dm0sIGluc3RhbnQtPnRvU3RyaW5nKCkpKSk7Cit9CisKKy8vIEZJWE1FOiBJcyB0aGlzIGJldHRl
ciBhcyBhIEpTQnVpbHRpbj8KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghaW5zdGFudCkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
Lkluc3RhbnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdHRlciA9
IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9y
bWF0U3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBmb3JtYXR0ZXItPmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBGSVhNRTogY2hhbmdlIEludGxE
YXRlVGltZUZvcm1hdCB0byB1c2UgZXBvY2hOYW5vc2Vjb25kcworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdHRlci0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMoKSkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNWYWx1ZU9m
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNh
bGxlZC4gVG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29t
cGFyZSJfcyk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsK
K30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdl
dHRlckVwb2NoTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFp
bnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBvY2hNaWxsaXNlY29uZHMo
KSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxJbnN0YW50Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoIWluc3RhbnQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vjb25kcyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50
T3JCaWdJbnQzMihnbG9iYWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWljcm9z
ZWNvbmRzKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFpbnN0YW50KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vj
b25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZy
b20oZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkp
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
OGRkZmIxNDY5ODk3OGI4YzA3ZTE4YjIwZWM5M2QzOTJkNzk4MzkzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBl
LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFz
ZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGZmMGJjZmRjZjgyZDIy
MWQxZWNiODVhOGMxYjQ2YjY1MWI0ZGI3MzUuLmYxMzY0ZmViMzQyNWRjMTM4ZDNlZWU0NzRkMzAw
MjlhNDY3NDVlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE9iamVjdC5jcHAKQEAgLTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCkBAIC02NSw2ICs2OCwxMyBAQCBzdGF0aWMgSlNWYWx1
ZSBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAg
ICByZXR1cm4gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9u
UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90
b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3Ry
dWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0
ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qo
dm0pOworICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1l
Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2Jq
ZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBA
IC04OSw2ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogQGJlZ2luIHRlbXBvcmFsT2JqZWN0VGFi
bGUKICAgQ2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250
RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29u
c3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBJbnN0YW50ICAgICAg
ICBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJh
Y2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAgICAgICBEb250
RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNv
bnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAg
ICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJh
Y2sKQEAgLTM3NCw2ICszODUsMTcgQEAgdm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nRnJhY3Rpb24o
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDoKICAgICB9CiB9
CiAKKy8vIEZvcm1hdFNlY29uZHNTdHJpbmdQYXJ0ICggc2Vjb25kLCBtaWxsaXNlY29uZCwgbWlj
cm9zZWNvbmQsIG5hbm9zZWNvbmQsIHByZWNpc2lvbiApCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1mb3JtYXRzZWNvbmRzc3RyaW5ncGFydAordm9p
ZCBmb3JtYXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25l
ZCBzZWNvbmQsIHVuc2lnbmVkIGZyYWN0aW9uLCBQcmVjaXNpb25EYXRhIHByZWNpc2lvbikKK3sK
KyAgICBpZiAocHJlY2lzaW9uLnVuaXQgPT0gVGVtcG9yYWxVbml0OjpNaW51dGUpCisgICAgICAg
IHJldHVybjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCc6JywgcGFkKCcwJywgMiwgc2Vjb25kKSk7
CisgICAgZm9ybWF0U2Vjb25kc1N0cmluZ0ZyYWN0aW9uKGJ1aWxkZXIsIGZyYWN0aW9uLCBwcmVj
aXNpb24ucHJlY2lzaW9uKTsKK30KKwogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGlu
Z0luY3JlbWVudCAoIHVuaXQgKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtbWF4aW11bXRlbXBvcmFsZHVyYXRpb25yb3VuZGluZ2luY3JlbWVudAog
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVu
aXQgdW5pdCkKQEAgLTQzNSw2ICs0NTcsNDUgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1l
bnQoZG91YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3N0YXRpYyBJbnQxMjggYWJzKEludDEy
OCB4KQoreworICAgIHJldHVybiB4IDwgMCA/IC14IDogeDsKK30KKworLy8gU2FtZSBhcyBhYm92
ZSwgYnV0IHdpdGggSW50MTI4CitJbnQxMjggcm91bmROdW1iZXJUb0luY3JlbWVudChJbnQxMjgg
eCwgSW50MTI4IGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCit7CisgICAgQVNTRVJUKGlu
Y3JlbWVudCk7CisKKyAgICBpZiAoaW5jcmVtZW50ID09IDEpCisgICAgICAgIHJldHVybiB4Owor
CisgICAgSW50MTI4IHF1b3RpZW50ID0geCAvIGluY3JlbWVudDsKKyAgICBJbnQxMjggcmVtYWlu
ZGVyID0geCAlIGluY3JlbWVudDsKKyAgICBpZiAoIXJlbWFpbmRlcikKKyAgICAgICAgcmV0dXJu
IHg7CisKKyAgICBib29sIHNpZ24gPSByZW1haW5kZXIgPCAwOworICAgIHN3aXRjaCAobW9kZSkg
eworICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgorICAgICAgICBpZiAoIXNpZ24pCisgICAg
ICAgICAgICBxdW90aWVudCsrOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJvdW5kaW5nTW9k
ZTo6Rmxvb3I6CisgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgcXVvdGllbnQtLTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRydW5jOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZDoKKyAgICAgICAgLy8gImhhbGYg
dXAgYXdheSBmcm9tIHplcm8iCisgICAgICAgIGlmIChhYnMocmVtYWluZGVyICogMikgPj0gaW5j
cmVtZW50KQorICAgICAgICAgICAgcXVvdGllbnQgKz0gc2lnbiA/IC0xIDogMTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBxdW90aWVudCAqIGluY3JlbWVudDsKK30KKwogVGVt
cG9yYWxPdmVyZmxvdyB0b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9y
YWxPdmVyZmxvdz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJv
cGVydHlOYW1lcy0+b3ZlcmZsb3csCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuaAppbmRleCA3OTE1Nzk4Y2RiOThhYjc0NTgzYjhjOGFjMzZhNTVkMWI0
NWYxYzE0Li5hYjNiMjkzM2Y1M2E4Y2E2ZDY2MWQyNmY2ZDcxOWI3NzljMmQ2NDBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKQEAgLTIyLDYg
KzIyLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KKyNp
bmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMDUsOSArMTA2
LDExIEBAIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRlbXBvcmFsRnJhY3Rpb25hbFNlY29uZERp
Z2l0cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0CiBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJp
bmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucyk7CiBSb3VuZGlu
Z01vZGUgdGVtcG9yYWxSb3VuZGluZ01vZGUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFJv
dW5kaW5nTW9kZSk7CiB2b2lkIGZvcm1hdFNlY29uZHNTdHJpbmdGcmFjdGlvbihTdHJpbmdCdWls
ZGVyJiwgdW5zaWduZWQgZnJhY3Rpb24sIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4p
Owordm9pZCBmb3JtYXRTZWNvbmRzU3RyaW5nUGFydChTdHJpbmdCdWlsZGVyJiwgdW5zaWduZWQg
c2Vjb25kLCB1bnNpZ25lZCBmcmFjdGlvbiwgUHJlY2lzaW9uRGF0YSk7CiBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5pdCk7CiBkb3VibGUg
dGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRp
b25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJvb2wgaW5jbHVzaXZlKTsKIGRv
dWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGluY3JlbWVudCwgUm91
bmRpbmdNb2RlKTsKK0ludDEyOCByb3VuZE51bWJlclRvSW5jcmVtZW50KEludDEyOCwgSW50MTI4
IGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAogZW51bSBjbGFzcyBUZW1wb3JhbE92ZXJmbG93
IDogYm9vbCB7CiAgICAgQ29uc3RyYWluLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IDJmYWM3MzQzNTQ4OWViNzBkNGQ5NmU4ZDI5YjM0YmQzYjY4ZGI4Y2YuLjljZjVmZWEw
MTk4NDlkYjZlNjYwOTEwYmI5NDUxY2QyN2MyNWZiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTE2Nyw2ICsxNjcsNyBAQAogI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0
aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQ
bGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVz
dFJ1bm5lclV0aWxzLmgiCkBAIC0xNTk3LDYgKzE1OTgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IFRlbXBvcmFsQ2FsZW5kYXIpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3Jh
bER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbEluc3RhbnQp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRp
bWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxQbGFpblRpbWUpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFRpbWVab25lKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNVaW50OEFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggYmRmNDMxZTg0ZWYwOTQ4NTZiYzAyNzMwYzQwZmZlNmVkYWE1YzFkNi4uNmZlNDY3NDA1YmJi
NDc0ZWMyMjNkNjliNDgxYjE4ZDZmMGFkM2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0xODcsNiArMTg3LDcgQEAgY2xhc3MgUmVnRXhwOwogI2VuZGlmCiBjbGFzcyBTeW1i
b2w7CiBjbGFzcyBUZW1wb3JhbER1cmF0aW9uOworY2xhc3MgVGVtcG9yYWxJbnN0YW50OwogY2xh
c3MgVHlwZWRBcnJheUNvbnRyb2xsZXI7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNz
IFVubGlua2VkRXZhbENvZGVCbG9jazsKQEAgLTYwMSw2ICs2MDIsNyBAQCBwdWJsaWM6CiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFs
Q2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRl
bXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oCmluZGV4IGVmYWI0YWQzYmM5ZjcwZDY3ZWI2MjNkMDczMTYxMDkyOTk4ZDNlMzQu
LjljMWE1ZmM3NDI0MTg1ZGQyOTdhMDFiZWRiZmNhMDJjYmVmMTk1NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaApAQCAtMjkxLDEyICsyOTEsMTggQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IExIUywgdHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRp
Y09wZXIKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgYWRkKExIUyBsaHMsIFJIUyByaHMsIFJlc3Vs
dFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewogI2lmIENPTVBJTEVSKEdD
Q19DT01QQVRJQkxFKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAgIGlmIChfX2J1
aWx0aW5fYWRkX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vs
c2UKKyNpZiAhSEFWRShJTlQxMjhfVCkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXplb2YoTEhT
KSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihSSFMpIDw9IHNpemVvZih1aW50NjRfdCkp
IHsKKyNlbmRpZgorICAgICAgICAgICAgUmVzdWx0VHlwZSB0ZW1wOworICAgICAgICAgICAgaWYg
KF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRpZgorI2Vu
ZGlmCiAgICAgICAgIGlmIChzaWduc01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICAgaWYg
KGxocyA+PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKChzdGQ6Om51bWVyaWNfbGltaXRzPFJl
c3VsdFR5cGU+OjptYXgoKSAtIHJocykgPCBsaHMpCkBAIC0zMDksMTggKzMxNSwyMyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0
cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9IC8vIGlmIHRoZSBzaWducyBkbyBub3QgbWF0
Y2ggdGhpcyBvcGVyYXRpb24gY2FuJ3Qgb3ZlcmZsb3cKICAgICAgICAgcmVzdWx0ID0gbGhzICsg
cmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBzdWIoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJO
X1VOVVNFRF9SRVRVUk4KICAgICB7CiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0gICAg
ICAgIFJlc3VsdFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3co
bGhzLCByaHMsICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVz
dWx0ID0gdGVtcDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQorI2lmICFIQVZFKElOVDEy
OF9UKQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihMSFMpIDw9IHNpemVvZih1aW50NjRf
dCkgfHwgc2l6ZW9mKFJIUykgPD0gc2l6ZW9mKHVpbnQ2NF90KSkgeworI2VuZGlmCisgICAgICAg
ICAgICBSZXN1bHRUeXBlIHRlbXA7CisgICAgICAgICAgICBpZiAoX19idWlsdGluX3N1Yl9vdmVy
ZmxvdyhsaHMsIHJocywgJnRlbXApKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHRlbXA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiAh
SEFWRShJTlQxMjhfVCkKKyAgICAgICAgfQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKCFz
aWduc01hdGNoKGxocywgcmhzKSkgewogICAgICAgICAgICAgaWYgKGxocyA+PSAwKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGxocyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1h
eCgpICsgcmhzKQpAQCAtMzMyLDE4ICszNDMsMjYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExIUywg
dHlwZW5hbWUgUkhTLCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXIK
ICAgICAgICAgfSAvLyBpZiB0aGUgc2lnbnMgbWF0Y2ggdGhpcyBvcGVyYXRpb24gY2FuJ3Qgb3Zl
cmZsb3cKICAgICAgICAgcmVzdWx0ID0gbGhzIC0gcmhzOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShMSFMgbGhz
LCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsK
ICNpZiBVU0UoTVVMX09WRVJGTE9XKQotICAgICAgICBSZXN1bHRUeXBlIHRlbXA7Ci0gICAgICAg
IGlmIChfX2J1aWx0aW5fbXVsX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotI2Vsc2UKKyAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBidWlsdGluIGlmIHRoZSBpbnQx
MjggdHlwZSBpcyBXVEY6OltVXUludDEyOEltcGwuCisgICAgICAgIC8vIEFsc28gZG9uJ3QgdXNl
IHRoZSBidWlsdGluIGZvciBfX1t1XWludDEyOF90IG9uIENsYW5nL0xpbnV4LgorICAgICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNAorI2lmICFI
QVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKSkKKyAgICAgICAg
aWYgY29uc3RleHByIChzaXplb2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8IHNpemVvZihS
SFMpIDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUmVzdWx0VHlw
ZSB0ZW1wOworICAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cobGhzLCByaHMs
ICZ0ZW1wKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1
bHQgPSB0ZW1wOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1Qp
IHx8IChDT01QSUxFUihDTEFORykgJiYgT1MoTElOVVgpKQorICAgICAgICB9CisjZW5kaWYKKyNl
bmRpZgogICAgICAgICBpZiAoc2lnbnNNYXRjaChsaHMsIHJocykpIHsKICAgICAgICAgICAgIGlm
IChsaHMgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChsaHMgJiYgKHN0ZDo6bnVtZXJpY19s
aW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC8gbGhzKSA8IHJocykKQEAgLTM2NSw3ICszODQsNiBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5
cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcgogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGxo
cyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0
aWMgaW5saW5lIGJvb2wgZGl2aWRlKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3Vs
dCkgV0FSTl9VTlVTRURfUkVUVVJOCkBAIC0zODUsNDcgKzQwMyw2NiBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTEhTLCB0eXBlbmFtZSBSSFMsIHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0
aG1ldGljT3BlcgogICAgIC8vIExIUyBhbmQgUkhTIGFyZSB1bnNpZ25lZCB0eXBlcyBzbyBib3Vu
ZHMgY2hlY2tzIGFyZSBuaWNlIGFuZCBlYXN5CiAgICAgc3RhdGljIGlubGluZSBib29sIGFkZChM
SFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIFdBUk5fVU5VU0VEX1JFVFVSTgog
ICAgIHsKLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKICAgICAgICAgUmVzdWx0VHlwZSB0
ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhsaHMsIHJocywgJnRlbXAp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSB0ZW1wOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgICAgIFJlc3VsdFR5cGUgdGVtcCA9IGxocyAr
IHJoczsKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKyNpZiAhSEFWRShJTlQxMjhfVCkK
KyAgICAgICAgaWYgY29uc3RleHByIChzaXplb2YoTEhTKSA8PSBzaXplb2YodWludDY0X3QpIHx8
IHNpemVvZihSSFMpIDw9IHNpemVvZih1aW50NjRfdCkpIHsKKyNlbmRpZgorICAgICAgICAgICAg
aWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGhzLCByaHMsICZ0ZW1wKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHQgPSB0ZW1wOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisjaWYgIUhBVkUoSU5UMTI4X1QpCisgICAgICAgIH0KKyNlbmRpZgor
I2VuZGlmCisgICAgICAgIHRlbXAgPSBsaHMgKyByaHM7CiAgICAgICAgIGlmICh0ZW1wIDwgbGhz
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQgPSB0ZW1wOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBzdWIoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBXQVJOX1VOVVNFRF9S
RVRVUk4KICAgICB7Ci0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCiAgICAgICAgIFJlc3Vs
dFR5cGUgdGVtcDsKLSAgICAgICAgaWYgKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cobGhzLCByaHMs
ICZ0ZW1wKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gdGVt
cDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAgICBSZXN1bHRUeXBlIHRlbXAg
PSBsaHMgLSByaHM7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisjaWYgIUhBVkUoSU5U
MTI4X1QpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVpbnQ2
NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAgICAg
ICAgICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworI2lmICFIQVZFKElOVDEyOF9UKQorICAgICAgICB9Cisj
ZW5kaWYKKyNlbmRpZgorICAgICAgICB0ZW1wID0gbGhzIC0gcmhzOwogICAgICAgICBpZiAodGVt
cCA+IGxocykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0ID0gdGVt
cDsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbXVsdGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSBX
QVJOX1VOVVNFRF9SRVRVUk4KICAgICB7CiAjaWYgVVNFKE1VTF9PVkVSRkxPVykKLSAgICAgICAg
UmVzdWx0VHlwZSB0ZW1wOwotICAgICAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsaHMs
IHJocywgJnRlbXApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQg
PSB0ZW1wOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCisgICAgICAgIC8vIERvbid0IHVz
ZSB0aGUgYnVpbHRpbiBpZiB0aGUgaW50MTI4IHR5cGUgaXMgV1RGOjpJbnQxMjhJbXBsLgorICAg
ICAgICAvLyBBbHNvIGRvbid0IHVzZSB0aGUgYnVpbHRpbiBmb3IgX19pbnQxMjhfdCBvbiBDbGFu
Zy9MaW51eC4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MDQKKyNpZiAhSEFWRShJTlQxMjhfVCkgfHwgKENPTVBJTEVSKENMQU5HKSAmJiBP
UyhMSU5VWCkpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKExIUykgPD0gc2l6ZW9mKHVp
bnQ2NF90KSB8fCBzaXplb2YoUkhTKSA8PSBzaXplb2YodWludDY0X3QpKSB7CisjZW5kaWYKKyAg
ICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcDsKKyAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fbXVs
X292ZXJmbG93KGxocywgcmhzLCAmdGVtcCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
I2lmICFIQVZFKElOVDEyOF9UKSB8fCAoQ09NUElMRVIoQ0xBTkcpICYmIE9TKExJTlVYKSkKKyAg
ICAgICAgfQorI2VuZGlmCisjZW5kaWYKICAgICAgICAgaWYgKCFsaHMgfHwgIXJocykgewogICAg
ICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDM0LDcg
KzQ3MSw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUg
UmVzdWx0VHlwZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHJlc3VsdCA9IGxocyAqIHJoczsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0j
ZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZGl2aWRlKExIUyBsaHMsIFJI
UyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgV0FSTl9VTlVTRURfUkVUVVJOCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApp
bmRleCBkZTBiNDViZDBhODhlYWJhNDY2YjZlNmMwYWQ2NmRjMDJmNTI1NzQxLi43YmIyN2U5OTc2
ZmIxNGUwNmZhNGVlNDg1NTM2MTdmY2EwNmQ4ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTM4OCw2ICsz
ODgsMTEgQEAgaW5saW5lIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFy
LCBib29sIGxlYXBZZWFyKQogICAgIHJldHVybiBkIC0gc3RlcDsKIH0KIAoraW5saW5lIGRvdWJs
ZSB0aW1lVG9NUyhkb3VibGUgaG91ciwgZG91YmxlIG1pbiwgZG91YmxlIHNlYywgZG91YmxlIG1z
KQoreworICAgIHJldHVybiAoKChob3VyICogV1RGOjptaW51dGVzUGVySG91ciArIG1pbikgKiBX
VEY6OnNlY29uZHNQZXJNaW51dGUgKyBzZWMpICogV1RGOjptc1BlclNlY29uZCArIG1zKTsKK30K
KwogLy8gUmV0dXJucyBjb21iaW5lZCBvZmZzZXQgaW4gbWlsbGlzZWNvbmQgKFVUQyArIERTVCku
CiBXVEZfRVhQT1JUX1BSSVZBVEUgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9m
ZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7CiAKQEAg
LTQxMCw2ICs0MTUsNyBAQCB1c2luZyBXVEY6Om1zVG9Ib3VyczsKIHVzaW5nIFdURjo6c2Vjb25k
c1BlckRheTsKIHVzaW5nIFdURjo6c2Vjb25kc1Blck1pbnV0ZTsKIHVzaW5nIFdURjo6cGFyc2VE
YXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVyczsKK3VzaW5nIFdURjo6dGltZVRvTVM7CiB1
c2luZyBXVEY6Om1ha2VSRkMyODIyRGF0ZVN0cmluZzsKIHVzaW5nIFdURjo6TG9jYWxUaW1lT2Zm
c2V0OwogdXNpbmcgV1RGOjpjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQ7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcyMWMyOWYxYzgxNzg4
OWNiNTY3MjhlNDg0MDE4NjRhMTgxYWY5MTAuLjBlNThiZTYyYzlkNjQxMDUzODQyMWE2NzMyYTlh
OTdhYzZjZDNiMWMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAtMjUgIFBoaWxpcCBDaGltZW50byAg
PHBjaGltZW50b0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3Jh
bC5JbnN0YW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAg
ICogc3RyZXNzL3RlbXBvcmFsLWluc3RhbnQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkTm90QmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoaW5zdGFudHMuZm9yRWFjaCk6CisgICAgICAgIChzaG91bGRUaHJvdy5uZXcuVGVtcG9yYWwu
SW5zdGFudCk6CisgICAgICAgIChjb25zdC5tYXhWYWx1ZS5uZXcuVGVtcG9yYWwuSW5zdGFudCk6
CisgICAgICAgIChzaG91bGRCZS5lcG9jaC5zdWJ0cmFjdCk6CisgICAgICAgICogdGVzdDI2Mi9j
b25maWcueWFtbDogTm8gbmVlZCB0byBpZ25vcmUgYWxsIFRlbXBvcmFsLkluc3RhbnQgdGVzdHMK
KyAgICAgICAgICBhbnltb3JlLCBvbmx5IHRoZSBvbmVzIGZvciB0aGUgdW5pbXBsZW1lbnRlZCBt
ZXRob2RzLgorCiAyMDIxLTExLTAxICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCBjcmFz
aGVzIGlmIHRoZSBsZW5ndGggKyBvYmplY3RPZmZzZXQgaXMgPiBVSU5UMzJfTUFYCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1pbnN0YW50LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
dGVtcG9yYWwtaW5zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTUyZWQxZjliNGVmNTQ1NjFhOTEyY2Iw
OGMyMzIwYzRlMTQ0ZmI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9y
YWwtaW5zdGFudC5qcwpAQCAtMCwwICsxLDQzNCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhw
ZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkTm90QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgPT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGEgdmFsdWUgdG8gYmUgZGlmZmVy
ZW50IGZyb20gJHtleHBlY3RlZH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisK
KyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2Ug
IT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKG1lc3NhZ2UpID09PSAnW29iamVjdCBSZWdFeHBdJykgeworICAgICAgICAgICAgaWYgKCFt
ZXNzYWdlLnRlc3QoU3RyaW5nKGVycm9yKSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBleHBlY3RlZCAnJHtTdHJpbmcoZXJyb3IpfScgdG8gbWF0Y2ggJHttZXNzYWdlfSFgKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciksIG1l
c3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBlcG9jaAoreworICAgIGNvbnN0IGlu
c3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgwbiksCisgICAgICAgIFRl
bXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoU2Vjb25kcygwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5mcm9t
RXBvY2hOYW5vc2Vjb25kcygwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3
MC0wMS0wMVQwMDowMDowMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGluc3Rh
bnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIDApOworICAg
ICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWlsbGlzZWNvbmRzLCAwKTsKKyAgICAgICAgc2hv
dWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMG4pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LmVwb2NoTmFub3NlY29uZHMsIDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50
b1N0cmluZygpLCAnMTk3MC0wMS0wMVQwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC50b0pTT04oKSwgJzE5NzAtMDEtMDFUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8v
IHBvc2l0aXZlIGVwb2NoIHZhbHVlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAg
IG5ldyBUZW1wb3JhbC5JbnN0YW50KDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAg
ICAgVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hTZWNvbmRzKDFfMDAwXzAwMF8wMDApLAorICAg
ICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygxXzAwMF8wMDBfMDAw
XzAwMCksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKDFf
MDAwXzAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9j
aE5hbm9zZWNvbmRzKDFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9y
YWwuSW5zdGFudC5mcm9tKCcyMDAxLTA5LTA5VDAxOjQ2OjQwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgMV8wMDBfMDAwXzAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hNaWxsaXNlY29uZHMsIDFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5z
dGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAgICAg
IHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwXzAwMF8wMDBfMDAw
XzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcyMDAxLTA5LTA5
VDAxOjQ2OjQwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvSlNPTigpLCAnMjAwMS0w
OS0wOVQwMTo0Njo0MFonKTsKKyAgICB9KTsKK30KKworLy8gbmVnYXRpdmUgZXBvY2ggdmFsdWUK
K3sKKyAgICBjb25zdCBpbnN0YW50cyA9IFsKKyAgICAgICAgbmV3IFRlbXBvcmFsLkluc3RhbnQo
LTFfMDAwXzAwMF8wMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFudC5m
cm9tRXBvY2hTZWNvbmRzKC0xXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hNaWxsaXNlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwKSwKKyAgICAgICAgVGVt
cG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWNyb3NlY29uZHMoLTFfMDAwXzAwMF8wMDBfMDAwXzAw
MG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRzKC0xXzAw
MF8wMDBfMDAwXzAwMF8wMDBfMDAwbiksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTkzOC0wNC0yNFQyMjoxMzoyMFonKSwKKyAgICBdOworICAgIGluc3RhbnRzLmZvckVhY2goKGlu
c3RhbnQpID0+IHsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaFNlY29uZHMsIC0xXzAw
MF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pbGxpc2Vjb25kcywg
LTFfMDAwXzAwMF8wMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5lcG9jaE1pY3Jv
c2Vjb25kcywgLTFfMDAwXzAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0
YW50LmVwb2NoTmFub3NlY29uZHMsIC0xXzAwMF8wMDBfMDAwXzAwMF8wMDBfMDAwbik7CisgICAg
ICAgIHNob3VsZEJlKGluc3RhbnQudG9TdHJpbmcoKSwgJzE5MzgtMDQtMjRUMjI6MTM6MjBaJyk7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQudG9KU09OKCksICcxOTM4LTA0LTI0VDIyOjEzOjIw
WicpOworICAgIH0pOworfQorCisvLyBtYXhpbnQ2NCBlcG9jaCB2YWx1ZQoreworICAgIGNvbnN0
IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCg5MjIzMzcyMDM2ODU0
Nzc1ODA3biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3NlY29uZHMo
OTIyMzM3MjAzNjg1NDc3NTgwN24pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb20oJzIy
NjItMDQtMTFUMjM6NDc6MTYuODU0Nzc1ODA3WicpLAorICAgIF07CisgICAgaW5zdGFudHMuZm9y
RWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoU2Vjb25k
cywgOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hNaWxsaXNlY29u
ZHMsIDkyMjMzNzIwMzY4NTQpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWljcm9z
ZWNvbmRzLCA5MjIzMzcyMDM2ODU0Nzc1bik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hOYW5vc2Vjb25kcywgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworICAgICAgICBzaG91bGRCZShp
bnN0YW50LnRvU3RyaW5nKCksICcyMjYyLTA0LTExVDIzOjQ3OjE2Ljg1NDc3NTgwN1onKTsKKyAg
ICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzIyNjItMDQtMTFUMjM6NDc6MTYuODU0
Nzc1ODA3WicpOworICAgIH0pOworfQorCisvLyBtaW5pbnQ2NCBlcG9jaCB2YWx1ZQoreworICAg
IGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFudCgtOTIyMzM3
MjAzNjg1NDc3NTgwOG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC05MjIzMzcyMDM2ODU0Nzc1ODA4biksCisgICAgICAgIFRlbXBvcmFsLkluc3RhbnQu
ZnJvbSgnMTY3Ny0wOS0yMVQwMDoxMjo0My4xNDUyMjQxOTJaJyksCisgICAgXTsKKyAgICBpbnN0
YW50cy5mb3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBv
Y2hTZWNvbmRzLCAtOTIyMzM3MjAzNik7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hN
aWxsaXNlY29uZHMsIC05MjIzMzcyMDM2ODU0KTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC5l
cG9jaE1pY3Jvc2Vjb25kcywgLTkyMjMzNzIwMzY4NTQ3NzVuKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworICAgICAg
ICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCksICcxNjc3LTA5LTIxVDAwOjEyOjQzLjE0NTIy
NDE5MlonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJzE2NzctMDktMjFU
MDA6MTI6NDMuMTQ1MjI0MTkyWicpOworICAgIH0pOworfQorCisvLyBtYXggSW5zdGFudCByYW5n
ZQoreworICAgIGNvbnN0IGluc3RhbnRzID0gWworICAgICAgICBuZXcgVGVtcG9yYWwuSW5zdGFu
dCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5zdGFu
dC5mcm9tRXBvY2hTZWNvbmRzKDg2NDAwXzAwMDBfMDAwMCksCisgICAgICAgIFRlbXBvcmFsLklu
c3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKDg2NDAwXzAwMDBfMDAwMF8wMDApLAorICAgICAg
ICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pY3Jvc2Vjb25kcyg4NjQwMF8wMDAwXzAwMDBf
MDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9zZWNvbmRz
KDg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50
LmZyb20oJysyNzU3NjAtMDktMTNUMDA6MDA6MDBaJyksCisgICAgXTsKKyAgICBpbnN0YW50cy5m
b3JFYWNoKChpbnN0YW50KSA9PiB7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hTZWNv
bmRzLCA4NjQwMF8wMDAwXzAwMDApOworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVwb2NoTWls
bGlzZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFu
dC5lcG9jaE1pY3Jvc2Vjb25kcywgODY0MDBfMDAwMF8wMDAwXzAwMF8wMDBuKTsKKyAgICAgICAg
c2hvdWxkQmUoaW5zdGFudC5lcG9jaE5hbm9zZWNvbmRzLCA4NjQwMF8wMDAwXzAwMDBfMDAwXzAw
MF8wMDBuKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b1N0cmluZygpLCAnKzI3NTc2MC0w
OS0xM1QwMDowMDowMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaW5zdGFudC50b0pTT04oKSwgJysy
NzU3NjAtMDktMTNUMDA6MDA6MDBaJyk7CisgICAgfSk7Cit9CisKKy8vIG1pbiBJbnN0YW50IHJh
bmdlCit7CisgICAgY29uc3QgaW5zdGFudHMgPSBbCisgICAgICAgIG5ldyBUZW1wb3JhbC5JbnN0
YW50KC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwuSW5z
dGFudC5mcm9tRXBvY2hTZWNvbmRzKC04NjQwMF8wMDAwXzAwMDApLAorICAgICAgICBUZW1wb3Jh
bC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcygtODY0MDBfMDAwMF8wMDAwXzAwMCksCisg
ICAgICAgIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKC04NjQwMF8wMDAw
XzAwMDBfMDAwXzAwMG4pLAorICAgICAgICBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE5hbm9z
ZWNvbmRzKC04NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKSwKKyAgICAgICAgVGVtcG9yYWwu
SW5zdGFudC5mcm9tKCctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpLAorICAgIF07CisgICAgaW5z
dGFudHMuZm9yRWFjaCgoaW5zdGFudCkgPT4geworICAgICAgICBzaG91bGRCZShpbnN0YW50LmVw
b2NoU2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMCk7CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQu
ZXBvY2hNaWxsaXNlY29uZHMsIC04NjQwMF8wMDAwXzAwMDBfMDAwKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5zdGFudC5lcG9jaE1pY3Jvc2Vjb25kcywgLTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwbik7
CisgICAgICAgIHNob3VsZEJlKGluc3RhbnQuZXBvY2hOYW5vc2Vjb25kcywgLTg2NDAwXzAwMDBf
MDAwMF8wMDBfMDAwXzAwMG4pOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRvU3RyaW5nKCks
ICctMjcxODIxLTA0LTIwVDAwOjAwOjAwWicpOworICAgICAgICBzaG91bGRCZShpbnN0YW50LnRv
SlNPTigpLCAnLTI3MTgyMS0wNC0yMFQwMDowMDowMFonKTsKKyAgICB9KTsKK30KKworWworICAg
IC8vIHRvbyBsYXJnZQorICAgIFs4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDFuLCAvXGI4NjQw
MDAwMDAwMDAwMDAwMDAwMDAxXGIvXSwKKyAgICAvLyB0b28gc21hbGwKKyAgICBbLTg2NDAwXzAw
MDBfMDAwMF8wMDBfMDAwXzAwMW4sIC8tODY0MDAwMDAwMDAwMDAwMDAwMDAwMVxiL10sCisgICAg
Ly8gdGVzdCAtbWluaW50MTI4IHNwZWNpZmljYWxseQorICAgIFsxbiA8PCAxMjhuLCAvXGIzNDAy
ODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZcYi9dLAorICAgIC8vIG11Y2ggbGFy
Z2VyIHRoYW4gbWF4aW50MTI4CisgICAgWzFuIDw8IDEyOW4sIC9cYjY4MDU2NDczMzg0MTg3Njky
NjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiL10sCisgICAgLy8gc21hbGxlciB0aGFuIG1pbmludDEy
OAorICAgIFstMW4gPDwgMTI5biwgLy02ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4NjM1MzY0
MjI5MTJcYi9dLAorICAgIC8vIGJlaGF2ZXMgc2Vuc2libHkgZXZlbiB3aGVuIHRoZSBiaWdpbnQg
aXMgcmVhbGx5IGxvbmcKKyAgICBbQmlnSW50KCc5Jy5yZXBlYXQoMTAwMCkpXSwKK10uZm9yRWFj
aCgoW25zLCBtZXNzYWdlTWF0Y2ggPSB1bmRlZmluZWRdKSA9PiB7CisgICAgc2hvdWxkVGhyb3co
KCkgPT4gbmV3IFRlbXBvcmFsLkluc3RhbnQobnMpLCBSYW5nZUVycm9yLCBtZXNzYWdlTWF0Y2gp
OworICAgIHNob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTmFub3Nl
Y29uZHMobnMpLCBSYW5nZUVycm9yLCBtZXNzYWdlTWF0Y2gpOworfSk7CisKK1sKKyAgICAvLyB0
b28gbGFyZ2UKKyAgICBbODY0MDBfMDAwMF8wMDAwXzAwMF8wMDFuLCAvXGI4NjQwMDAwMDAwMDAw
MDAwMDAxXGIvXSwKKyAgICAvLyB0b28gc21hbGwKKyAgICBbLTg2NDAwXzAwMDBfMDAwMF8wMDBf
MDAxbiwgLy04NjQwMDAwMDAwMDAwMDAwMDAxXGIvXSwKKyAgICAvLyB0ZXN0IG1heHVpbnQ2NCBz
cGVjaWZpY2FsbHkKKyAgICBbMW4gPDwgNjRuLCAvXGIxODQ0Njc0NDA3MzcwOTU1MTYxNlxiL10s
CisgICAgLy8gdGVzdCBtYXh1aW50MTI4IHNwZWNpZmljYWxseQorICAgIFsxbiA8PCAxMjhuLCAv
XGIzNDAyODIzNjY5MjA5Mzg0NjM0NjMzNzQ2MDc0MzE3NjgyMTE0NTZcYi9dLAorICAgIC8vIG11
Y2ggbGFyZ2VyIHRoYW4gbWF4aW50MTI4CisgICAgWzFuIDw8IDEyOW4sIC9cYjY4MDU2NDczMzg0
MTg3NjkyNjkyNjc0OTIxNDg2MzUzNjQyMjkxMlxiL10sCisgICAgLy8gc21hbGxlciB0aGFuIG1p
bmludDEyOAorICAgIFstMW4gPDwgMTI5biwgLy02ODA1NjQ3MzM4NDE4NzY5MjY5MjY3NDkyMTQ4
NjM1MzY0MjI5MTJcYi9dLAorICAgIC8vIGJlaGF2ZXMgc2Vuc2libHkgZXZlbiB3aGVuIHRoZSBi
aWdpbnQgaXMgcmVhbGx5IGxvbmcKKyAgICBbQmlnSW50KCc5Jy5yZXBlYXQoMTAwMCkpXSwKK10u
Zm9yRWFjaCgoW8K1cywgbWVzc2FnZU1hdGNoID0gdW5kZWZpbmVkXSkgPT4geworICAgIHNob3Vs
ZFRocm93KCgpID0+IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWljcm9zZWNvbmRzKMK1cyks
IFJhbmdlRXJyb3IsIG1lc3NhZ2VNYXRjaCk7Cit9KTsKKworLy8gY29uc3RydWN0cyBmcm9tIHN0
cmluZworc2hvdWxkQmUobmV3IFRlbXBvcmFsLkluc3RhbnQoJzAnKS5lcG9jaE5hbm9zZWNvbmRz
LCAwbik7CisvLyB0aHJvd3Mgb24gbnVtYmVyCitzaG91bGRUaHJvdygoKSA9PiBuZXcgVGVtcG9y
YWwuSW5zdGFudCgwKSwgVHlwZUVycm9yKTsKKy8vIHRocm93cyBvbiBzdHJpbmcgdGhhdCBkb2Vz
IG5vdCBjb252ZXJ0IHRvIEJpZ0ludAorc2hvdWxkVGhyb3coKCkgPT4gbmV3IFRlbXBvcmFsLklu
c3RhbnQoJ2FiYzEyMycpLCBTeW50YXhFcnJvcik7CisKKy8vIEluc3RhbnQuZnJvbShpbnN0YW50
KSBpcyBub3QgdGhlIHNhbWUgb2JqZWN0Cit7CisgICAgY29uc3QgaW5zdCA9IFRlbXBvcmFsLklu
c3RhbnQuZnJvbSgnMjAyMC0wMi0xMlQxMTo0MiswMTowMFtFdXJvcGUvQW1zdGVyZGFtXScpOwor
ICAgIHNob3VsZE5vdEJlKFRlbXBvcmFsLkluc3RhbnQuZnJvbShpbnN0KSwgaW5zdCk7Cit9CisK
Ky8vIHRvU3RyaW5nCisKK3sKKyAgICBjb25zdCBpMSA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk3Ni0xMS0xOFQxNToyM1onKTsKKyAgICBjb25zdCBpMiA9IFRlbXBvcmFsLkluc3RhbnQuZnJv
bSgnMTk3Ni0xMS0xOFQxNToyMzozMFonKTsKKyAgICBjb25zdCBpMyA9IFRlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOworCisgICAgLy8gZGVmYXVsdCBp
cyB0byBlbWl0IHNlY29uZHMgYW5kIGRyb3AgdHJhaWxpbmcgemVyb3MgYWZ0ZXIgdGhlIGRlY2lt
YWwnCisgICAgc2hvdWxkQmUoaTEudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7
CisgICAgc2hvdWxkQmUoaTIudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6MjM6MzBaJyk7Cisg
ICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFonKTsK
KworICAgIC8vIHRydW5jYXRlcyB0byBtaW51dGUKKyAgICBbaTEsIGkyLCBpM10uZm9yRWFjaCgo
aSkgPT4gc2hvdWxkQmUoaS50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScgfSksICcx
OTc2LTExLTE4VDE1OjIzWicpKTsKKworICAgIC8vIG90aGVyIHNtYWxsZXN0VW5pdHMgYXJlIGFs
aWFzZXMgZm9yIGZyYWN0aW9uYWwgZGlnaXRzCisgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcoeyBz
bWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmRE
aWdpdHM6IDAgfSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAn
bWlsbGlzZWNvbmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDMg
fSkpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWljcm9zZWNv
bmQnIH0pLCBpMy50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDYgfSkpOworICAg
IHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbmFub3NlY29uZCcgfSksIGkz
LnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOSB9KSk7CisKKyAgICAvLyB0cnVu
Y2F0ZSBvciBwYWQgdG8gMiBwbGFjZXMKKyAgICB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDIgfTsKKyAgICAgICAgc2hvdWxkQmUoaTEudG9TdHJp
bmcob3B0aW9ucyksICcxOTc2LTExLTE4VDE1OjIzOjAwLjAwWicpOworICAgICAgICBzaG91bGRC
ZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMDBaJyk7CisgICAg
ICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4x
MlonKTsKKyAgICB9CisgICAgLy8gcGFkIHRvIDcgcGxhY2VzCisgICAgeworICAgICAgICBjb25z
dCBvcHRpb25zID0geyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA3IH07CisgICAgICAgIHNob3Vs
ZEJlKGkxLnRvU3RyaW5nKG9wdGlvbnMpLCAnMTk3Ni0xMS0xOFQxNToyMzowMC4wMDAwMDAwWicp
OworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyhvcHRpb25zKSwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMDAwMDAwMFonKTsKKyAgICAgICAgc2hvdWxkQmUoaTMudG9TdHJpbmcob3B0aW9ucyks
ICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQwMDBaJyk7CisgICAgfQorCisgICAgLy8gcm91bmQg
dG8gbmVhcmVzdAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWlu
dXRlJywgcm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2LTExLTE4VDE1OjI0Wicp
OworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMywg
cm91bmRpbmdNb2RlOiAnaGFsZkV4cGFuZCcgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyM1on
KTsKKyAgICAvLyByb3VuZCB1cAorICAgIHNob3VsZEJlKGkyLnRvU3RyaW5nKHsgc21hbGxlc3RV
bml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTExLTE4VDE1OjI0
WicpOworICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czog
Mywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSksICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyNFonKTsK
KyAgICAvLyByb3VuZCBkb3duCisgICAgWydmbG9vcicsICd0cnVuYyddLmZvckVhY2goKHJvdW5k
aW5nTW9kZSkgPT4geworICAgICAgICBzaG91bGRCZShpMi50b1N0cmluZyh7IHNtYWxsZXN0VW5p
dDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZSB9KSwgJzE5NzYtMTEtMThUMTU6MjNaJyk7CisgICAg
ICAgIHNob3VsZEJlKGkzLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMywgcm91
bmRpbmdNb2RlIH0pLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNaJyk7CisgICAgfSk7CisKKyAg
ICB7CisgICAgICAgIC8vIHJvdW5kaW5nIGRvd24gaXMgdG93YXJkcyB0aGUgQmlnIEJhbmcsIG5v
dCB0b3dhcmRzIDEgQkNFCisgICAgICAgIGNvbnN0IGk0ID0gVGVtcG9yYWwuSW5zdGFudC5mcm9t
KCctMDAwMDk5LTEyLTE1VDEyOjAwOjAwLjVaJyk7CisgICAgICAgIHNob3VsZEJlKGk0LnRvU3Ry
aW5nKHsgc21hbGxlc3RVbml0OiAnc2Vjb25kJywgcm91bmRpbmdNb2RlOiAnZmxvb3InIH0pLCAn
LTAwMDA5OS0xMi0xNVQxMjowMDowMFonKTsKKworICAgICAgICAvLyByb3VuZGluZyBjYW4gYWZm
ZWN0IGFsbCB1bml0cworICAgICAgICBjb25zdCBpNSA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbSgn
MTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5OTlaJyk7CisgICAgICAgIHNob3VsZEJlKGk1LnRv
U3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogOCwgcm91bmRpbmdNb2RlOiAnaGFsZkV4
cGFuZCcgfSksICcyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMDAwMDAwWicpOworICAgIH0KK30KKwor
Ly8gbGVhcCBzZWNvbmQgaXMgY29uc3RyYWluZWQKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMjAxNi0xMi0zMVQyMzo1OTo2MFonKX1gLCAnMjAxNi0xMi0zMVQyMzo1OTo1OVon
KTsKKy8vIHZhcmlhbnQgdGltZSBzZXBhcmF0b3JzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMTggMTU6MjNaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMTh0MTU6MjNaJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyB2YXJpYW50IFVUQyBkZXNpZ25hdG9yCitz
aG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjN6Jyl9YCwg
JzE5NzYtMTEtMThUMTU6MjM6MDBaJyk7CisvLyBhbnkgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2Vz
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAu
MVonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyWicpfWAsICcxOTc2LTExLTE4VDE1
OjIzOjMwLjEyWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTEx
LTE4VDE1OjIzOjMwLjEyM1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjNaJyk7CitzaG91
bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNFon
KX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwu
SW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1WicpfWAsICcxOTc2LTExLTE4
VDE1OjIzOjMwLjEyMzQ1WicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcx
OTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1NlonKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0
NTZaJyk7CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6
MjM6MzAuMTIzNDU2N1onKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3WicpOworc2hv
dWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1
Njc4WicpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4WicpOworc2hvdWxkQmUoYCR7
VGVtcG9yYWwuSW5zdGFudC5mcm9tKCcxOTc2LTExLTE4VDE1OjIzOjMwLjEyMzQ1Njc4OVonKX1g
LCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xMjM0NTY3ODlaJyk7CisvLyB2YXJpYW50IGRlY2ltYWwg
c2VwYXJhdG9yCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThU
MTU6MjM6MzAsMTJaJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTJaJyk7CisvLyB2YXJpYW50
IG1pbnVzIHNpZ24KK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNToyMzozMC4xMlx1MjIxMjAyOjAwJyl9YCwgJzE5NzYtMTEtMThUMTc6MjM6MzAuMTJaJyk7
CitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJ1x1MjIxMjAwOTk5OS0xMS0xOFQx
NToyMzozMC4xMlonKX1gLCAnLTAwOTk5OS0xMS0xOFQxNToyMzozMC4xMlonKTsKKy8vIG1peHR1
cmUgb2YgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAorc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0x
OFQxNTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRC
ZShgJHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6
MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTU6
MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAk
e1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3NjExMThUMTUyMzMwLjErMDA6MDAnKX1gLCAnMTk3
Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5zdGFudC5mcm9t
KCcrMDAxOTc2MTExOFQxNToyMzozMC4xKzAwOjAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAu
MVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQx
NTIzMzAuMSswMDowMCcpfWAsICcxOTc2LTExLTE4VDE1OjIzOjMwLjFaJyk7CitzaG91bGRCZShg
JHtUZW1wb3JhbC5JbnN0YW50LmZyb20oJyswMDE5NzYtMTEtMThUMTU6MjM6MzAuMSswMDAwJyl9
YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3Rh
bnQuZnJvbSgnKzAwMTk3Ni0xMS0xOFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjEx
MThUMTU6MjM6MzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMVonKTsKK3Nob3Vs
ZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnKzAwMTk3NjExMThUMTUyMzMwLjErMDA6MDAn
KX1gLCAnMTk3Ni0xMS0xOFQxNToyMzozMC4xWicpOworc2hvdWxkQmUoYCR7VGVtcG9yYWwuSW5z
dGFudC5mcm9tKCcrMDAxOTc2MTExOFQxNTIzMzAuMSswMDAwJyl9YCwgJzE5NzYtMTEtMThUMTU6
MjM6MzAuMVonKTsKKy8vIG9wdGlvbmFsIHBhcnRzCitzaG91bGRCZShgJHtUZW1wb3JhbC5JbnN0
YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzArMDAnKX1gLCAnMTk3Ni0xMS0xOFQxNToyMzoz
MFonKTsKK3Nob3VsZEJlKGAke1RlbXBvcmFsLkluc3RhbnQuZnJvbSgnMTk3Ni0xMS0xOFQxNVon
KX1gLCAnMTk3Ni0xMS0xOFQxNTowMDowMFonKTsKKy8vIGlnbm9yZXMgYW55IHNwZWNpZmllZCBj
YWxlbmRhcgorLy8gRklYTUU6IHBhcnNlIGNhbGVuZGFyCisvLyBzaG91bGRCZShgJHtUZW1wb3Jh
bC5JbnN0YW50LmZyb20oJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wlt1LWNhPWRpc2Nv
cmRdJyl9YCwgJzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5WicpOworLy8gbm8ganVuayBh
dCBlbmQgb2Ygc3RyaW5nCitzaG91bGRUaHJvdygoKSA9PiBUZW1wb3JhbC5JbnN0YW50LmZyb20o
JzE5NzYtMTEtMThUMTU6MjM6MzAuMTIzNDU2Nzg5Wmp1bmsnKSwgUmFuZ2VFcnJvcik7CisKKy8v
IEZvciBjb252ZW5pZW5jZSBpbiBzZXZlcmFsIHRlc3RzCitjb25zdCBlcG9jaCA9IG5ldyBUZW1w
b3JhbC5JbnN0YW50KDBuKTsKK2NvbnN0IG1pblZhbHVlID0gbmV3IFRlbXBvcmFsLkluc3RhbnQo
LTg2NDAwXzAwMDBfMDAwMF8wMDBfMDAwXzAwMG4pOworY29uc3QgbWF4VmFsdWUgPSBuZXcgVGVt
cG9yYWwuSW5zdGFudCg4NjQwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDBuKTsKKworLy8gYWRkKCkK
KworeworICAgIHNob3VsZEJlKGVwb2NoLmFkZCh7IGhvdXJzOiAxIH0pLmVwb2NoTmFub3NlY29u
ZHMsIDM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBob3Vyczog
LTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRC
ZShlcG9jaC5hZGQoeyBtaW51dGVzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDYwXzAwMF8wMDBf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWludXRlczogLTEgfSkuZXBvY2hOYW5v
c2Vjb25kcywgLTYwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgc2Vj
b25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxk
QmUoZXBvY2guYWRkKHsgc2Vjb25kczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAw
MF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBtaWxsaXNlY29uZHM6IDEgfSkuZXBv
Y2hOYW5vc2Vjb25kcywgMV8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWls
bGlzZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwbik7CisgICAgc2hv
dWxkQmUoZXBvY2guYWRkKHsgbWljcm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIDFf
MDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbWljcm9zZWNvbmRzOiAtMSB9KS5lcG9j
aE5hbm9zZWNvbmRzLCAtMV8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5hZGQoeyBuYW5vc2Vj
b25kczogMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxbik7CisgICAgc2hvdWxkQmUoZXBvY2guYWRk
KHsgbmFub3NlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIC0xbik7Cit9CisKK3sKKyAg
ICAvLyBtYXggZHVyYXRpb24gdGhhdCBjYW4gYmUgYWRkZWQgdG8gYW55IEluc3RhbnQKKyAgICBz
aG91bGRCZShtaW5WYWx1ZS5hZGQoeyBob3VyczogNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVl
LmFkZCh7IGhvdXJzOiAtNDhfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVl
LmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZhbHVlLmFkZCh7IG1pbnV0ZXM6
IDI4ODBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3Nl
Y29uZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLmFkZCh7IG1pbnV0ZXM6IC0yODgwXzAwMDBf
MDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBzaG91bGRCZShtaW5WYWx1ZS5hZGQoeyBzZWNvbmRzOiAxNzI4MDBfMDAwMF8wMDAwIH0pLmVw
b2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJl
KG1heFZhbHVlLmFkZCh7IHNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIC8vIG5vdGUsIHVuc2FmZSBp
bnRlZ2VycyBmcm9tIGhlcmUgb247IHRoZSBtdWx0aXBsaWNhdGlvbiB0byBjb252ZXJ0CisgICAg
Ly8gbWlsbGlzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgdG8gbmFub3NlY29uZHMgc2hvdWxkIHRh
a2UgcGxhY2UgaW4gdGhlCisgICAgLy8gYmlnaW50IGRvbWFpbi4KKyAgICBzaG91bGRCZShtaW5W
YWx1ZS5hZGQoeyBtaWxsaXNlY29uZHM6IDE3MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVwb2NoTmFu
b3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1heFZh
bHVlLmFkZCh7IG1pbGxpc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwIH0pLmVwb2NoTmFu
b3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1pblZh
bHVlLmFkZCh7IG1pY3Jvc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwIH0pLmVwb2No
TmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1h
eFZhbHVlLmFkZCh7IG1pY3Jvc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRC
ZShtaW5WYWx1ZS5hZGQoeyBuYW5vc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBfMDAwXzAw
MCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBz
aG91bGRCZShtYXhWYWx1ZS5hZGQoeyBuYW5vc2Vjb25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAw
XzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7
Cit9CisKK3sKKyAgICAvLyBvdmVyZmxvd2luZyA2NCBiaXRzCisgICAgY29uc3QgZXhwNjQgPSAy
ICoqIDY0OworICAgIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxpc2Vjb25k
cycsICdtaWNyb3NlY29uZHMnXS5mb3JFYWNoKCh1bml0KSA9PiB7CisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IGVwb2NoLmFkZCh7IFt1bml0XTogZXhwNjQgfSksIFJhbmdlRXJyb3IpOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiBlcG9jaC5hZGQoeyBbdW5pdF06IC1leHA2NCB9KSwgUmFu
Z2VFcnJvcik7CisgICAgfSk7CisgICAgc2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6
IGV4cDY0IH0pLmVwb2NoTmFub3NlY29uZHMsIDE4NDQ2NzQ0MDczNzA5NTUxNjE2bik7CisgICAg
c2hvdWxkQmUoZXBvY2guYWRkKHsgbmFub3NlY29uZHM6IC1leHA2NCB9KS5lcG9jaE5hbm9zZWNv
bmRzLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTZuKTsKK30KKworeworICAgIC8vIG92ZXJmbG93aW5n
IDEyOCBiaXRzCisgICAgWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNv
bmRzJywgJ21pY3Jvc2Vjb25kcycsICduYW5vc2Vjb25kcyddLmZvckVhY2goKHVuaXQpID0+IHsK
KyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2guYWRkKHsgW3VuaXRdOiBOdW1iZXIuTUFY
X1ZBTFVFIH0pLCBSYW5nZUVycm9yKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gZXBvY2gu
YWRkKHsgW3VuaXRdOiAtTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7
Cit9CisKKy8vIHN1YnRyYWN0KCkKKworeworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsg
aG91cnM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTM2MDBfMDAwXzAwMF8wMDBuKTsKKyAgICBz
aG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IGhvdXJzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAz
NjAwXzAwMF8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3QoeyBtaW51dGVz
OiAxIH0pLmVwb2NoTmFub3NlY29uZHMsIC02MF8wMDBfMDAwXzAwMG4pOworICAgIHNob3VsZEJl
KGVwb2NoLnN1YnRyYWN0KHsgbWludXRlczogLTEgfSkuZXBvY2hOYW5vc2Vjb25kcywgNjBfMDAw
XzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IHNlY29uZHM6IDEgfSku
ZXBvY2hOYW5vc2Vjb25kcywgLTFfMDAwXzAwMF8wMDBuKTsKKyAgICBzaG91bGRCZShlcG9jaC5z
dWJ0cmFjdCh7IHNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMF8wMDBu
KTsKKyAgICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogMSB9KS5lcG9j
aE5hbm9zZWNvbmRzLCAtMV8wMDBfMDAwbik7CisgICAgc2hvdWxkQmUoZXBvY2guc3VidHJhY3Qo
eyBtaWxsaXNlY29uZHM6IC0xIH0pLmVwb2NoTmFub3NlY29uZHMsIDFfMDAwXzAwMG4pOworICAg
IHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAxIH0pLmVwb2NoTmFub3Nl
Y29uZHMsIC0xXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbWljcm9zZWNv
bmRzOiAtMSB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxXzAwMG4pOworICAgIHNob3VsZEJlKGVwb2No
LnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IDEgfSkuZXBvY2hOYW5vc2Vjb25kcywgLTFuKTsKKyAg
ICBzaG91bGRCZShlcG9jaC5zdWJ0cmFjdCh7IG5hbm9zZWNvbmRzOiAtMSB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCAxbik7Cit9CisKK3sKKyAgICAvLyBtYXggZHVyYXRpb24gdGhhdCBjYW4gYmUgYWRk
ZWQgdG8gYW55IEluc3RhbnQKKyAgICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IGhvdXJz
OiA0OF8wMDAwXzAwMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vj
b25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBob3VyczogLTQ4XzAwMDBf
MDAwMCB9KS5lcG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAg
ICBzaG91bGRCZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDI4ODBfMDAwMF8wMDAwIH0p
LmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3Vs
ZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbWludXRlczogLTI4ODBfMDAwMF8wMDAwIH0pLmVwb2No
TmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIHNob3VsZEJlKG1h
eFZhbHVlLnN1YnRyYWN0KHsgc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMCB9KS5lcG9jaE5hbm9z
ZWNvbmRzLCBtaW5WYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRCZShtaW5WYWx1
ZS5zdWJ0cmFjdCh7IHNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwIH0pLmVwb2NoTmFub3NlY29u
ZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAgIC8vIG5vdGUsIHVuc2FmZSBpbnRl
Z2VycyBmcm9tIGhlcmUgb247IHRoZSBtdWx0aXBsaWNhdGlvbiB0byBjb252ZXJ0CisgICAgLy8g
bWlsbGlzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgdG8gbmFub3NlY29uZHMgc2hvdWxkIHRha2Ug
cGxhY2UgaW4gdGhlCisgICAgLy8gYmlnaW50IGRvbWFpbi4KKyAgICBzaG91bGRCZShtYXhWYWx1
ZS5zdWJ0cmFjdCh7IG1pbGxpc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDAgfSkuZXBvY2hO
YW5vc2Vjb25kcywgbWluVmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWlu
VmFsdWUuc3VidHJhY3QoeyBtaWxsaXNlY29uZHM6IC0xNzI4MDBfMDAwMF8wMDAwXzAwMCB9KS5l
cG9jaE5hbm9zZWNvbmRzLCBtYXhWYWx1ZS5lcG9jaE5hbm9zZWNvbmRzKTsKKyAgICBzaG91bGRC
ZShtYXhWYWx1ZS5zdWJ0cmFjdCh7IG1pY3Jvc2Vjb25kczogMTcyODAwXzAwMDBfMDAwMF8wMDBf
MDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1pblZhbHVlLmVwb2NoTmFub3NlY29uZHMpOworICAg
IHNob3VsZEJlKG1pblZhbHVlLnN1YnRyYWN0KHsgbWljcm9zZWNvbmRzOiAtMTcyODAwXzAwMDBf
MDAwMF8wMDBfMDAwIH0pLmVwb2NoTmFub3NlY29uZHMsIG1heFZhbHVlLmVwb2NoTmFub3NlY29u
ZHMpOworICAgIHNob3VsZEJlKG1heFZhbHVlLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IDE3Mjgw
MF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywgbWluVmFsdWUuZXBv
Y2hOYW5vc2Vjb25kcyk7CisgICAgc2hvdWxkQmUobWluVmFsdWUuc3VidHJhY3QoeyBuYW5vc2Vj
b25kczogLTE3MjgwMF8wMDAwXzAwMDBfMDAwXzAwMF8wMDAgfSkuZXBvY2hOYW5vc2Vjb25kcywg
bWF4VmFsdWUuZXBvY2hOYW5vc2Vjb25kcyk7Cit9CisKK3sKKyAgICAvLyBvdmVyZmxvd2luZyA2
NCBiaXRzCisgICAgY29uc3QgZXhwNjQgPSAyICoqIDY0OworICAgIFsnaG91cnMnLCAnbWludXRl
cycsICdzZWNvbmRzJywgJ21pbGxpc2Vjb25kcycsICdtaWNyb3NlY29uZHMnXS5mb3JFYWNoKCh1
bml0KSA9PiB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRyYWN0KHsgW3Vu
aXRdOiBleHA2NCB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVw
b2NoLnN1YnRyYWN0KHsgW3VuaXRdOiAtZXhwNjQgfSksIFJhbmdlRXJyb3IpOworICAgIH0pOwor
ICAgIHNob3VsZEJlKGVwb2NoLnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IGV4cDY0IH0pLmVwb2No
TmFub3NlY29uZHMsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNm4pOworICAgIHNob3VsZEJlKGVwb2No
LnN1YnRyYWN0KHsgbmFub3NlY29uZHM6IC1leHA2NCB9KS5lcG9jaE5hbm9zZWNvbmRzLCAxODQ0
Njc0NDA3MzcwOTU1MTYxNm4pOworfQorCit7CisgICAgLy8gb3ZlcmZsb3dpbmcgMTI4IGJpdHMK
KyAgICBbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNlY29uZHMnLCAnbWlj
cm9zZWNvbmRzJywgJ25hbm9zZWNvbmRzJ10uZm9yRWFjaCgodW5pdCkgPT4geworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiBlcG9jaC5zdWJ0cmFjdCh7IFt1bml0XTogTnVtYmVyLk1BWF9WQUxV
RSB9KSwgUmFuZ2VFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGVwb2NoLnN1YnRy
YWN0KHsgW3VuaXRdOiAtTnVtYmVyLk1BWF9WQUxVRSB9KSwgUmFuZ2VFcnJvcik7CisgICAgfSk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKaW5kZXggOTYyZDUyNDYyNTI1YWZiYjI5NmQ5YWNmZDZkOGEwYTE0
NGYyMGIzNC4uYWVkNjM0YjE4ZmNhNmZhOTA5NjRjOGU5MTJjN2FiNjMyZjNiMzFlNyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbApAQCAtMjMsNyArMjMsOCBAQCBza2lwOgogICAgIC0gY2FsbGFibGUtYm91bmRh
cnktcmVhbG1zCiAgIHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvQ2FsZW5k
YXIKLSAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvYnVp
bHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQorICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1l
SVNPCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxh
aW5EYXRlVGltZQpAQCAtMzQsNyArMzUsOCBAQCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvVGltZVpvbmUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1pvbmVkRGF0
ZVRpbWUKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9DYWxlbmRhcgotICAgIC0gdGVzdC9p
bnRsNDAyL1RlbXBvcmFsL0luc3RhbnQKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9JbnN0
YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKKyAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3Jh
bC9JbnN0YW50L3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWVJU08KICAgICAtIHRlc3QvaW50bDQw
Mi9UZW1wb3JhbC9Ob3cKICAgICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGUKICAg
ICAtIHRlc3QvaW50bDQwMi9UZW1wb3JhbC9QbGFpbkRhdGVUaW1lCkBAIC0yNDcsNiArMjQ5LDcg
QEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlw
ZS90b1N0cmluZy9zbWFsbGVzdHVuaXQtcGx1cmFscy1hY2NlcHRlZC5qcwogICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL2NhbGVuZGFyLXRlbXBv
cmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJv
dG90eXBlL3RvdGFsL3VuaXQtcGx1cmFscy1hY2NlcHRlZC5qcworICAgIC0gdGVzdC9idWlsdC1p
bnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdG9TdHJpbmcvc21hbGxlc3R1bml0LXBsdXJh
bHMtYWNjZXB0ZWQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9j
b21wYXJlL2NhbGVuZGFyLXRlbXBvcmFsLW9iamVjdC5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvUGxhaW5UaW1lL2Zyb20vY2FsZW5kYXItdGVtcG9yYWwtb2JqZWN0LmpzCiAgICAg
LSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL2VxdWFscy9jYWxl
bmRhci10ZW1wb3JhbC1vYmplY3QuanMKQEAgLTI3Miw2ICsyNzUsMTMgQEAgc2tpcDoKICAgICAt
IHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9vcmRl
ci1vZi1vcGVyYXRpb25zLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlv
bi9wcm90b3R5cGUvdG90YWwvZGF0ZXVudGlsLWZpZWxkLmpzCiAKKyAgICAjIERlcGVuZHMgb24g
VGVtcG9yYWwuVGltZVpvbmUKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQv
cHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5vbi1p
bnRlZ2VyLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlw
ZS90b1N0cmluZy90aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1vdXQtb2YtcmFuZ2Uu
anMKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3Ry
aW5nL3RpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLXdyb25nLXR5cGUuanMKKyAgICAt
IHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvcHJvdG90eXBlL3RvU3RyaW5nL3RpbWV6
b25lLXN0cmluZy1kYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5z
dGFudC9wcm90b3R5cGUvdG9TdHJpbmcvdGltZXpvbmUuanMKKwogICAgICMgRGVwZW5kcyBvbiBU
ZW1wb3JhbC5ab25lZERhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJh
dGlvbi9jb21wYXJlL3JlbGF0aXZldG8tem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9z
ZWNvbmRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9jb21wYXJl
L3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zv
ci1ub24taW50ZWdlci5qcwpAQCAtMjk5LDYgKzMwOSwxMSBAQCBza2lwOgogICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFsL3JlbGF0aXZldG8tem9u
ZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zvci1ub24taW50ZWdlci5q
cwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvRHVyYXRpb24vcHJvdG90eXBlL3RvdGFs
L3JlbGF0aXZldG8tem9uZWRkYXRldGltZS10aW1lem9uZS1nZXRvZmZzZXRuYW5vc2Vjb25kc2Zv
ci1vdXQtb2YtcmFuZ2UuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9u
L3Byb3RvdHlwZS90b3RhbC9yZWxhdGl2ZXRvLXpvbmVkZGF0ZXRpbWUtdGltZXpvbmUtZ2V0b2Zm
c2V0bmFub3NlY29uZHNmb3Itd3JvbmctdHlwZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvSW5zdGFudC9jb21wYXJlL2FyZ3VtZW50LXpvbmVkZGF0ZXRpbWUuanMKKyAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL0luc3RhbnQvZnJvbS9hcmd1bWVudC16b25lZGRhdGV0aW1l
LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9JbnN0YW50L3Byb3RvdHlwZS9lcXVh
bHMvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvSW5zdGFudC9wcm90b3R5cGUvc2luY2UvYXJndW1lbnQtem9uZWRkYXRldGltZS5qcworICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5cGUvdW50aWwvYXJndW1l
bnQtem9uZWRkYXRldGltZS5qcwogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5U
aW1lL2NvbXBhcmUvYXJndW1lbnQtem9uZWRkYXRldGltZS1uZWdhdGl2ZS1lcG9jaG5hbm9zZWNv
bmRzLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29tcGFyZS9h
cmd1bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRzZm9yLW5v
bi1pbnRlZ2VyLmpzCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvY29t
cGFyZS9hcmd1bWVudC16b25lZGRhdGV0aW1lLXRpbWV6b25lLWdldG9mZnNldG5hbm9zZWNvbmRz
Zm9yLW91dC1vZi1yYW5nZS5qcwpAQCAtMzM0LDUgKzM0OSw2IEBAIHNraXA6CiAgICAgLSB0ZXN0
L2J1aWx0LWlucy9UZW1wb3JhbC9EdXJhdGlvbi9wcm90b3R5cGUvcm91bmQvYmFsYW5jZS1uZWdh
dGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL0R1cmF0aW9uL3By
b3RvdHlwZS9yb3VuZC9yb3VuZC1uZWdhdGl2ZS1yZXN1bHQuanMKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL0R1cmF0aW9uL3Byb3RvdHlwZS9zdWJ0cmFjdC9iYWxhbmNlLW5lZ2F0aXZl
LXJlc3VsdC5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudC9wcm90b3R5
cGUvdW50aWwvaW5zdGFudC1zdHJpbmcuanMKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L1BsYWluVGltZS9wcm90b3R5cGUvc2luY2UvYmFsYW5jZS1uZWdhdGl2ZS10aW1lLXVuaXRzLmpz
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3VudGls
L2JhbGFuY2UtbmVnYXRpdmUtdGltZS11bml0cy5qcwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>