<?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>224090</bug_id>
          
          <creation_ts>2021-04-01 19:00:09 -0700</creation_ts>
          <short_desc>[CoreIPC] Encoding/decoding of WebCore::CapabilityValueOrRange transmits padding bytes</short_desc>
          <delta_ts>2021-04-10 19:50:55 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>223821</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746356</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-01 19:00:09 -0700</bug_when>
    <thetext>[CoreIPC] Encoding/decoding of WebCore::CapabilityValueOrRange transmits padding bytes.

Currently ValueUnion objects are encoded as a block of memory instead of as individual values.

&lt;rdar://problem/75981660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746366</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-01 19:45:23 -0700</bug_when>
    <thetext>Note for potential reviewers (especially Alex):

WebCore::CapabilityValueOrRange could be changed to be a WTF::Variant, but to keep this patch simple, I started by fixing the issue of sending padding bytes first.

Also, it&apos;s been long enough since I&apos;ve worked on CoreIPC that I&apos;m not sure if this is a step forward to the &quot;new&quot; way of writing IPC decoders, but it keeps RealtimeMediaSourceCapabilities::decode() very simple to read by hiding the complexity in the CapabilityValueOrRange::decoder() method and in IPC/ArgumentCoders.h:

template&lt;class Decoder&gt;
bool RealtimeMediaSourceCapabilities::decode(Decoder&amp; decoder, RealtimeMediaSourceCapabilities&amp; capabilities)
{
    return decoder.decode(capabilities.m_width)
        &amp;&amp; decoder.decode(capabilities.m_height)
        &amp;&amp; decoder.decode(capabilities.m_aspectRatio)
        &amp;&amp; decoder.decode(capabilities.m_frameRate)
        &amp;&amp; decoder.decode(capabilities.m_facingMode)
        &amp;&amp; decoder.decode(capabilities.m_volume)
        &amp;&amp; decoder.decode(capabilities.m_sampleRate)
        &amp;&amp; decoder.decode(capabilities.m_sampleSize)
        &amp;&amp; decoder.decode(capabilities.m_echoCancellation)
        &amp;&amp; decoder.decode(capabilities.m_deviceId)
        &amp;&amp; decoder.decode(capabilities.m_groupId)
        &amp;&amp; decoder.decode(capabilities.m_supportedConstraints);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746368</commentid>
    <comment_count>2</comment_count>
      <attachid>424979</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-01 19:48:45 -0700</bug_when>
    <thetext>Created attachment 424979
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746372</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-01 19:56:11 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #2)
&gt; Created attachment 424979 [details]
&gt; Patch v1

I may have over-used makeOptional() as well.  Should I remove every makeOptional() that&apos;s not necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746522</commentid>
    <comment_count>4</comment_count>
      <attachid>424979</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-02 09:21:12 -0700</bug_when>
    <thetext>Comment on attachment 424979
Patch v1

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

I personally prefer {{ }} over makeOptional.

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:105
&gt; +    ValueUnion m_minOrValue;

Instead of all this, why don&apos;t we just use Variant&lt;double, int, std::pair&lt;double, double&gt;, std::pair&lt;int, int&gt;&gt;?

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:181
&gt; +        optional = U::decode(decoder);

Are there types where this doesn&apos;t work, or could we just remove the is_default_constructible version of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746569</commentid>
    <comment_count>5</comment_count>
      <attachid>424979</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-02 10:44:18 -0700</bug_when>
    <thetext>Comment on attachment 424979
Patch v1

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:105
&gt;&gt; +    ValueUnion m_minOrValue;
&gt; 
&gt; Instead of all this, why don&apos;t we just use Variant&lt;double, int, std::pair&lt;double, double&gt;, std::pair&lt;int, int&gt;&gt;?

See Comment #1.  Switching to use a Variant&lt;&gt; was more complexity than I wanted to tackle in this patch.

BTW, any advantage to using std::pair&lt;double, double&gt; instead of Vector&lt;double&gt;[2]?  I though std::pair&lt;&gt; was most commonly used for two different types.

&gt;&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:181
&gt;&gt; +        optional = U::decode(decoder);
&gt; 
&gt; Are there types where this doesn&apos;t work, or could we just remove the is_default_constructible version of this?

I wouldn&apos;t have guessed this, but the is_default_constructible&lt;&gt; version is not used!  Will post a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746740</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-02 18:17:10 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; Comment on attachment 424979 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424979&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:105
&gt; &gt;&gt; +    ValueUnion m_minOrValue;
&gt; &gt; 
&gt; &gt; Instead of all this, why don&apos;t we just use Variant&lt;double, int, std::pair&lt;double, double&gt;, std::pair&lt;int, int&gt;&gt;?
&gt; 
&gt; See Comment #1.  Switching to use a Variant&lt;&gt; was more complexity than I
&gt; wanted to tackle in this patch.
I think it&apos;s exactly as much complexity as should be tackled in this patch.
&gt; 
&gt; BTW, any advantage to using std::pair&lt;double, double&gt; instead of
&gt; Vector&lt;double&gt;[2]?  I though std::pair&lt;&gt; was most commonly used for two
&gt; different types.
std::pair keeps enough space for two things.  Vector keeps a size and a pointer to a dynamically allocated buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748495</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 15:14:57 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; &gt; Comment on attachment 424979 [details]
&gt; &gt; Patch v1
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=424979&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:105
&gt; &gt; &gt;&gt; +    ValueUnion m_minOrValue;
&gt; &gt; &gt; 
&gt; &gt; &gt; Instead of all this, why don&apos;t we just use Variant&lt;double, int, std::pair&lt;double, double&gt;, std::pair&lt;int, int&gt;&gt;?
&gt; &gt; 
&gt; &gt; See Comment #1.  Switching to use a Variant&lt;&gt; was more complexity than I
&gt; &gt; wanted to tackle in this patch.
&gt; 
&gt; I think it&apos;s exactly as much complexity as should be tackled in this patch.

I wrote the patch to switch to Variant, but it turned out a bit bigger than I would have liked (though not too big to review).

&gt; &gt; BTW, any advantage to using std::pair&lt;double, double&gt; instead of
&gt; &gt; Vector&lt;double&gt;[2]?  I though std::pair&lt;&gt; was most commonly used for two
&gt; &gt; different types.
&gt; 
&gt; std::pair keeps enough space for two things.  Vector keeps a size and a
&gt; pointer to a dynamically allocated buffer.

Great point.  I also used C++17 strutted bindings in one source file to hide the need to use .first and .second.

&lt;https://en.cppreference.com/w/cpp/language/structured_binding&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748498</commentid>
    <comment_count>8</comment_count>
      <attachid>425546</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 15:18:56 -0700</bug_when>
    <thetext>Created attachment 425546
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748506</commentid>
    <comment_count>9</comment_count>
      <attachid>425546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-08 15:26:13 -0700</bug_when>
    <thetext>Comment on attachment 425546
Patch v2

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:44
&gt; +    using ULong = int;

What does the &quot;U&quot; in &quot;ULong&quot; mean? If it means &quot;unsigned&quot; then why is the type &quot;signed int&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748540</commentid>
    <comment_count>10</comment_count>
      <attachid>425557</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 16:20:40 -0700</bug_when>
    <thetext>Created attachment 425557
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748541</commentid>
    <comment_count>11</comment_count>
      <attachid>425546</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 16:24:23 -0700</bug_when>
    <thetext>Comment on attachment 425546
Patch v2

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:44
&gt;&gt; +    using ULong = int;
&gt; 
&gt; What does the &quot;U&quot; in &quot;ULong&quot; mean? If it means &quot;unsigned&quot; then why is the type &quot;signed int&quot;?

I don&apos;t know.  One would imagine it means &quot;unsigned&quot; as in &quot;unsigned long&quot;, but one would be mistaken because LongRange.idl defines the value as an int.

Guess I&apos;ll change it to Long/LongRange then!  (Not sure why the original enums used &quot;ULong&quot;, though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748542</commentid>
    <comment_count>12</comment_count>
      <attachid>425546</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 16:28:58 -0700</bug_when>
    <thetext>Comment on attachment 425546
Patch v2

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

&gt;&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:44
&gt;&gt;&gt; +    using ULong = int;
&gt;&gt; 
&gt;&gt; What does the &quot;U&quot; in &quot;ULong&quot; mean? If it means &quot;unsigned&quot; then why is the type &quot;signed int&quot;?
&gt; 
&gt; I don&apos;t know.  One would imagine it means &quot;unsigned&quot; as in &quot;unsigned long&quot;, but one would be mistaken because LongRange.idl defines the value as an int.
&gt; 
&gt; Guess I&apos;ll change it to Long/LongRange then!  (Not sure why the original enums used &quot;ULong&quot;, though.)

I also wondered if I should change &quot;Double&quot; and &quot;Long&quot; to &quot;DoubleValue&quot; and &quot;LongValue&quot; just so they aren&apos;t so generic.

Feedback welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748543</commentid>
    <comment_count>13</comment_count>
      <attachid>425558</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 16:31:47 -0700</bug_when>
    <thetext>Created attachment 425558
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748544</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-08 16:32:34 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #10)
&gt; Created attachment 425557 [details]
&gt; Patch v3

Build fix for GTK port.

(In reply to David Kilzer (:ddkilzer) from comment #13)
&gt; Created attachment 425558 [details]
&gt; Patch v4

Rename ULong/ULongRange to Long/LongRange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748642</commentid>
    <comment_count>15</comment_count>
      <attachid>425558</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-09 01:12:57 -0700</bug_when>
    <thetext>Comment on attachment 425558
Patch v4

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:102
&gt; +    const CapabilityValueOrRange&amp; width() const { return *m_width; }

There is no guarantee that m_width might not be null here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748757</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-04-09 09:29:31 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #11)
&gt; Comment on attachment 425546 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425546&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:44
&gt; &gt;&gt; +    using ULong = int;
&gt; &gt; 
&gt; &gt; What does the &quot;U&quot; in &quot;ULong&quot; mean? If it means &quot;unsigned&quot; then why is the type &quot;signed int&quot;?
&gt; 
&gt; I don&apos;t know.  One would imagine it means &quot;unsigned&quot; as in &quot;unsigned long&quot;,
&gt; but one would be mistaken because LongRange.idl defines the value as an int.
&gt; 
&gt; Guess I&apos;ll change it to Long/LongRange then!  (Not sure why the original
&gt; enums used &quot;ULong&quot;, though.)

Looks like that is my fault. The value was `unsigned long` when I added ValueUnion in r193389:

    union ValueUnion {
        unsigned long asULong;
        float asFloat;
    };

but when I changed it to `int` in r205348 I neglected to update the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749055</commentid>
    <comment_count>17</comment_count>
      <attachid>425558</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-10 19:50:55 -0700</bug_when>
    <thetext>Comment on attachment 425558
Patch v4

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:319
&gt; +            WTFLogAlways(&quot;RealtimeMediaSource::supportsSizeAndFrameRate failed width constraint, capabilities are [%d, %d]&quot;, *range.min, *range.max);

This also looks like it&apos;s unchecked dereferencing something.  Maybe an Optional.  I don&apos;t think it should.  It should be 0 or the dereferenced value like it was.

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:156
&gt; +    Optional&lt;CapabilityValueOrRange&gt; m_width;

Why were these changed to Optional?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424979</attachid>
            <date>2021-04-01 19:48:45 -0700</date>
            <delta_ts>2021-04-08 15:18:54 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-224090-20210401194844.patch</filename>
            <type>text/plain</type>
            <size>18654</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU5MWU4N2Q1NDMyZjhk
MjU3YzNmZGUxOGUwMjg1YjQ3YjRkNzc0YS4uMTdhZGRmMTFiY2NhNzRlMjllNWRlNDdlZTA5OGRl
OTI1NTc3NzY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA0LTAxICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvcmVJUENdIEVuY29k
aW5nL2RlY29kaW5nIG9mIFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgdHJhbnNtaXRz
IHBhZGRpbmcgYnl0ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIyNDA5MD4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1OTgxNjYwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZW5jb2RlcyB0aGUgdmFsdWVzIHN0
b3JlZCBpbiBWYWx1ZVVuaW9uIHVuaW9ucyByYXRoZXIKKyAgICAgICAgdGhhbiB0aGUgYmxvY2sg
b2YgbWVtb3J5IHRoYXQgYmFja3MgdGhlbS4gVGhpcyBjaGFuZ2VzIG1fbWF4IHRvCisgICAgICAg
IGFuIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U+IHZhbHVlIHNpbmNlIGl0J3Mgbm90
IGFsd2F5cworICAgICAgICB1c2VkLCBhbmQgaXQgcmVtb3ZlcyB0aGUgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZTo6VHlwZTo6VW5kZWZpbmVkCisgICAgICAgIGVudW0gc2luY2UgaXQgd2FzIG9ubHkg
dXNlZCBmb3IgSVBDIGRlY29kaW5nIGFuZCB1bnVzZWQgbV9tYXgKKyAgICAgICAgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSBvYmplY3RzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1hZGRFdmVudExpc3RlbmVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
bWVkaWFzdHJlYW0vY29uc3RyYWludC1pbnRyaW5zaWMtc2l6ZS5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1pZnJhbWUt
YWxsb3ctYXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWlmcmFtZS1hbGxvdy1hdHRyaWJ1dGUuaHRtbAor
ICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1
cmUtcmVjb3JkL01lZGlhUmVjb3JkZXItYml0cmF0ZS5odHRwcy5odG1sCisgICAgICAgICAgICAg
ICB3ZWJydGMvYWRkSUNFQ2FuZGlkYXRlLWNsb3NlZC5odG1sCisgICAgICAgICAgICAgICB3ZWJy
dGMvaWNlLWNhbmRpZGF0ZS1zZHBNTGluZUluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0
Yy9saWJ3ZWJydGMvZGVzY3JpcHRpb25HZXR0ZXJzLmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0
Yy9wZWVyY29ubmVjdGlvbi1wYWdlLWNhY2hlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXBhYmls
aXR5RG91YmxlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FwYWJpbGl0eUludFJhbmdlKToK
KyAgICAgICAgLSBSZW1vdmUgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VW5kZWZpbmVkIGVudW0u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpU
eXBlKToKKyAgICAgICAgLSBSZW1vdmUgVW5kZWZpbmVkIGVudW0gc2luY2UgaXQncyBubyBsb25n
ZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6Q2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSk6CisgICAgICAgIC0gRGVsZXRlIGRlZmF1bHQgY29uc3RydWN0
b3Igc2luY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBjcmVhdGUgYW4KKyAgICAgICAgICBvYmplY3Qg
d2l0aCBhIFR5cGUgb2YgVW5kZWZpbmVkLgorICAgICAgICAtIFVwZGF0ZSBjb25zdHJ1Y3RvcnMg
dGhhdCByZXByZXNlbnQgYSByYW5nZSB0byBzZXQgT3B0aW9uYWw8PgorICAgICAgICAgIG1fbWF4
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6cmFuZ2VNYXggY29u
c3QpOgorICAgICAgICAtIFVwZGF0ZSB0byByZXR1cm4gdmFsdWUgc3RvcmVkIGluIE9wdGlvbmFs
PD4gbV9tYXguCisgICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAtIFVwZGF0ZSB0byBlbmNvZGUgb25seSB0aGUgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSB2YWx1ZXMgdXNlZAorICAgICAgICAgIGJhc2VkIG9uIG1fdHlwZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmRlY29kZSk6CisgICAgICAg
IC0gVXBkYXRlIHRvIHJldHVybiBhbiBPcHRpb25hbDxDYXBhYmlsaXR5VmFsdWVPclJhbmdlPiB2
YWx1ZQorICAgICAgICAgIGluc3RlYWQgb2YgYSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBwYXJh
bWV0ZXIuIFRoaXMgaXMKKyAgICAgICAgICByZXF1aXJlZCB0byBzdG9wIHVzaW5nIHRoZSBkZWZh
dWx0IGNvbnN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0SGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZyYW1lUmF0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
OjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllczo6YXNwZWN0UmF0aW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0QXNwZWN0UmF0aW8pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6dm9sdW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldFZvbHVt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpz
YW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OnNldFNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2FtcGxlU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRTYW1wbGVTaXplKToKKyAg
ICAgICAgLSBNYWtlIGFsbCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIGluc3RhbmNlIHZhcmlhYmxl
cyBPcHRpb25hbDw+CisgICAgICAgICAgc2luY2UgdGhleSBhcmUsIGluIGZhY3QsIGFsbCBvcHRp
b25hbCB2YWx1ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjpkZWNvZGUpOgorICAgICAgICAtIFVwZGF0ZSBvcmRlciBvZiBl
bmNvZGVkL2RlY29kZWQgaW5zdGFuY2UgdmFyaWFibGVzIHRvIG1hdGNoCisgICAgICAgICAgdGhl
IG9yZGVyIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzLgorCisgICAgICAgIChzdHJ1Y3Qg
V1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU+KToK
KyAgICAgICAgLSBSZW1vdmUgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZTo6VW5kZWZpbmVk
IGVudW0uCisKIDIwMjEtMDMtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBVQlNhbjogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzcygpL2Rp
c21pc3NTb29uKCk6IHJ1bnRpbWUgZXJyb3I6IGxvYWQgb2YgdmFsdWUgbm5uLCB3aGljaCBpcyBu
b3QgYSB2YWxpZCB2YWx1ZSBmb3IgdHlwZSAnYm9vbCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2Q3NjEzMDU3MjU5
NmFhZjdmOTc4ZjJmMjMwZDFlMzIwMWIyZjExNy4uNWEzZjcwZjU2MTk2YzdkZDU0YzUzZDk5MWNi
ZTNiMTdlZTE1ZjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0wMSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtDb3JlSVBDXSBFbmNv
ZGluZy9kZWNvZGluZyBvZiBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHRyYW5zbWl0
cyBwYWRkaW5nIGJ5dGVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjQwOTA+Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTk4MTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgLSBBZGQgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2hlbiBhIGRlZmF1bHQgY29uc3Ry
dWN0b3IgaXMgbm90CisgICAgICAgICAgYXZhaWxhYmxlIGZvciBhIGNsYXNzIGNvbnRhaW5lZCB3
aXRoaW4gYW4gT3B0aW9uYWw8Pi4gVGhpcworICAgICAgICAgIHVzZXMgYSBzdGF0aWMgZGVjb2Rl
KCkgbWV0aG9kIG9uIHRoZSBjbGFzcyB0aGF0IHJldHVybnMgYW4KKyAgICAgICAgICBPcHRpb25h
bDw+LgorCiAyMDIxLTAzLTI3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBDTTogU2VuZCByZXBvcnQgdG8gYm90aCBjbGljayBzb3VyY2UgYW5k
IGF0dHJpYnV0aW9uIGRlc3RpbmF0aW9uIHdlYnNpdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDZjMWYx
N2EwM2Y3OTIyNTFhNTJiYThhZDQwMDJkZThhYmJhN2JlNDcuLmIyNzNjYTI1NTg4ODE3OTVhYjdl
NjEzMzdjNWI0YWI0ZDg3ZmY1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMjg4LDcgKzI4OCw2IEBA
IHN0YXRpYyBEb3VibGVSYW5nZSBjYXBhYmlsaXR5RG91YmxlUmFuZ2UoY29uc3QgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSYgdmFsdWUpCiAgICAgICAgIHJhbmdlLm1pbiA9IHZhbHVlLnJhbmdlTWlu
KCkuYXNEb3VibGU7CiAgICAgICAgIHJhbmdlLm1heCA9IHZhbHVlLnJhbmdlTWF4KCkuYXNEb3Vi
bGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VW5k
ZWZpbmVkOgogICAgIGNhc2UgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmc6CiAgICAgY2Fz
ZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTMwOCw3ICszMDcsNiBAQCBzdGF0aWMgTG9uZ1JhbmdlIGNhcGFiaWxp
dHlJbnRSYW5nZShjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2YWx1ZSkKICAgICAgICAg
cmFuZ2UubWluID0gdmFsdWUucmFuZ2VNaW4oKS5hc0ludDsKICAgICAgICAgcmFuZ2UubWF4ID0g
dmFsdWUucmFuZ2VNYXgoKS5hc0ludDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpVbmRlZmluZWQ6CiAgICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJh
bmdlOjpEb3VibGU6CiAgICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5n
ZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzLmgKaW5kZXggMjQwZmQ0OTY3MmJjZTgzNjdlYTcyMjlhNTZkN2E0ZTdj
OGVmNmJhYi4uZDk5MGQwZGIzNGQ0NTk5YWIxYzVkMTE0YzA2NGQzMWM3ZDFmM2UzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaApAQCAtNDAsNyArNDAsNiBAQCBj
bGFzcyBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHsKIHB1YmxpYzoKIAogICAgIGVudW0gVHlwZSB7
Ci0gICAgICAgIFVuZGVmaW5lZCwKICAgICAgICAgRG91YmxlLAogICAgICAgICBVTG9uZywKICAg
ICAgICAgRG91YmxlUmFuZ2UsCkBAIC01MywxMCArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlu
dCBhc0ludDsKICAgICB9OwogCi0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgpCi0gICAgICAg
IDogbV90eXBlKFVuZGVmaW5lZCkKLSAgICB7Ci0gICAgfQorICAgIENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UoKSA9IGRlbGV0ZTsKIAogICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoZG91YmxlIHZh
bHVlKQogICAgICAgICA6IG1fdHlwZShEb3VibGUpCkBAIC03NCwxNCArNzAsMTQgQEAgcHVibGlj
OgogICAgICAgICA6IG1fdHlwZShEb3VibGVSYW5nZSkKICAgICB7CiAgICAgICAgIG1fbWluT3JW
YWx1ZS5hc0RvdWJsZSA9IG1pbjsKLSAgICAgICAgbV9tYXguYXNEb3VibGUgPSBtYXg7CisgICAg
ICAgIG1fbWF4ID0gbWFrZU9wdGlvbmFsKFZhbHVlVW5pb24geyAuYXNEb3VibGUgPSBtYXggfSk7
CiAgICAgfQogICAgIAogICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoaW50IG1pbiwgaW50IG1h
eCkKICAgICAgICAgOiBtX3R5cGUoVUxvbmdSYW5nZSkKICAgICB7CiAgICAgICAgIG1fbWluT3JW
YWx1ZS5hc0ludCA9IG1pbjsKLSAgICAgICAgbV9tYXguYXNJbnQgPSBtYXg7CisgICAgICAgIG1f
bWF4ID0gbWFrZU9wdGlvbmFsKFZhbHVlVW5pb24geyAuYXNJbnQgPSBtYXggfSk7CiAgICAgfQog
CiAgICAgY29uc3QgVmFsdWVVbmlvbiYgcmFuZ2VNaW4oKSBjb25zdApAQCAtOTMsNyArODksNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmFsdWVVbmlvbiYgcmFuZ2VNYXgoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBEb3VibGVSYW5nZSB8fCBtX3R5cGUgPT0gVUxvbmdS
YW5nZSk7Ci0gICAgICAgIHJldHVybiBtX21heDsKKyAgICAgICAgcmV0dXJuICptX21heDsKICAg
ICB9CiAKICAgICBjb25zdCBWYWx1ZVVuaW9uJiB2YWx1ZSgpIGNvbnN0CkBAIC0xMDMsMjggKzk5
LDgxIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxDYXBhYmlsaXR5VmFsdWVPclJhbmdlPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgot
ICAgIFZhbHVlVW5pb24gbV9taW5PclZhbHVlIHsgfTsKLSAgICBWYWx1ZVVuaW9uIG1fbWF4IHsg
fTsKLSAgICBUeXBlIG1fdHlwZSB7IFVuZGVmaW5lZCB9OworICAgIFZhbHVlVW5pb24gbV9taW5P
clZhbHVlOworICAgIE9wdGlvbmFsPFZhbHVlVW5pb24+IG1fbWF4OworICAgIFR5cGUgbV90eXBl
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJm1fbWlu
T3JWYWx1ZSksIHNpemVvZihWYWx1ZVVuaW9uKSwgYWxpZ25vZihWYWx1ZVVuaW9uKSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oJm1fbWF4KSwgc2l6ZW9mKFZhbHVlVW5pb24pLCBhbGlnbm9mKFZhbHVlVW5pb24pKTsK
ICAgICBlbmNvZGVyIDw8IG1fdHlwZTsKKworICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6RG91Ymxl
IHx8IG1fdHlwZSA9PSBUeXBlOjpEb3VibGVSYW5nZSkKKyAgICAgICAgZW5jb2RlciA8PCBtX21p
bk9yVmFsdWUuYXNEb3VibGU7CisgICAgZWxzZSBpZiAobV90eXBlID09IFR5cGU6OlVMb25nIHx8
IG1fdHlwZSA9PSBUeXBlOjpVTG9uZ1JhbmdlKQorICAgICAgICBlbmNvZGVyIDw8IG1fbWluT3JW
YWx1ZS5hc0ludDsKKworICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6RG91YmxlUmFuZ2UpCisgICAg
ICAgIGVuY29kZXIgPDwgKCptX21heCkuYXNEb3VibGU7CisgICAgZWxzZSBpZiAobV90eXBlID09
IFR5cGU6OlVMb25nUmFuZ2UpCisgICAgICAgIGVuY29kZXIgPDwgKCptX21heCkuYXNJbnQ7CiB9
CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2YWx1ZU9y
UmFuZ2UpCitPcHRpb25hbDxDYXBhYmlsaXR5VmFsdWVPclJhbmdlPiBDYXBhYmlsaXR5VmFsdWVP
clJhbmdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5k
ZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlT3JS
YW5nZS5tX21pbk9yVmFsdWUpLCBzaXplb2YoVmFsdWVVbmlvbiksIGFsaWdub2YoVmFsdWVVbmlv
bikpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZU9yUmFuZ2UubV9tYXgpLCBzaXplb2YoVmFsdWVVbmlvbiks
IGFsaWdub2YoVmFsdWVVbmlvbikpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHZhbHVlT3JS
YW5nZS5tX3R5cGUpOworICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7CisgICAgZGVjb2RlciA+PiB0
eXBlOworICAgIGlmICghdHlwZSkgeworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gVHlw
ZTo6RG91YmxlIHx8IHR5cGUgPT0gVHlwZTo6RG91YmxlUmFuZ2UpIHsKKyAgICAgICAgT3B0aW9u
YWw8ZG91YmxlPiBtaW5PclZhbHVlOworICAgICAgICBkZWNvZGVyID4+IG1pbk9yVmFsdWU7Cisg
ICAgICAgIGlmICghbWluT3JWYWx1ZSkgeworICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodHlwZSA9PSBUeXBlOjpEb3VibGUpCisgICAgICAgICAgICByZXR1cm4gbWFrZU9wdGlv
bmFsKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoKm1pbk9yVmFsdWUpKTsKKworICAgICAgICBPcHRp
b25hbDxkb3VibGU+IG1heDsKKyAgICAgICAgZGVjb2RlciA+PiBtYXg7CisgICAgICAgIGlmICgh
bWF4KSB7CisgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIHJldHVybiBtYWtlT3B0aW9u
YWwoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgqbWluT3JWYWx1ZSwgKm1heCkpOworICAgIH0KKwor
ICAgIGlmICh0eXBlID09IFR5cGU6OlVMb25nIHx8IHR5cGUgPT0gVHlwZTo6VUxvbmdSYW5nZSkg
eworICAgICAgICBPcHRpb25hbDxpbnQ+IG1pbk9yVmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4g
bWluT3JWYWx1ZTsKKyAgICAgICAgaWYgKCFtaW5PclZhbHVlKSB7CisgICAgICAgICAgICBkZWNv
ZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICB9CisgICAgICAgIGlmICh0eXBlID09IFR5cGU6OlVMb25nKQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VPcHRpb25hbChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKCptaW5PclZhbHVlKSk7CisK
KyAgICAgICAgT3B0aW9uYWw8aW50PiBtYXg7CisgICAgICAgIGRlY29kZXIgPj4gbWF4OworICAg
ICAgICBpZiAoIW1heCkgeworICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bWFrZU9wdGlvbmFsKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoKm1pbk9yVmFsdWUsICptYXgpKTsK
KyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkZWNvZGVyLm1hcmtJbnZh
bGlkKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogY2xhc3MgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyB7CkBAIC0xNDQsMzYgKzE5MywzNiBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRD
b25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVP
clJhbmdlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICB2b2lkIHNldFdp
ZHRoKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0
aDsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gKm1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGNvbnN0IENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGggPSBtYWtlT3B0aW9uYWwod2lkdGgpOyB9CiAKICAg
ICBib29sIHN1cHBvcnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJh
aW50cy5zdXBwb3J0c0hlaWdodCgpOyB9Ci0gICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB2b2lkIHNldEhlaWdo
dChjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWln
aHQ7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQoKSBjb25zdCB7
IHJldHVybiAqbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodChjb25zdCBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQgPSBtYWtlT3B0aW9uYWwoaGVpZ2h0KTsg
fQogCiAgICAgYm9vbCBzdXBwb3J0c0ZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9y
dGVkQ29uc3RyYWludHMuc3VwcG9ydHNGcmFtZVJhdGUoKTsgfQotICAgIGNvbnN0IENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UmIGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9
Ci0gICAgdm9pZCBzZXRGcmFtZVJhdGUoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJh
bWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSYgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gKm1fZnJhbWVSYXRlOyB9
CisgICAgdm9pZCBzZXRGcmFtZVJhdGUoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJh
bWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gbWFrZU9wdGlvbmFsKGZyYW1lUmF0ZSk7IH0KIAogICAg
IGJvb2wgc3VwcG9ydHNGYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25z
dHJhaW50cy5zdXBwb3J0c0ZhY2luZ01vZGUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGUoKSBjb25z
dCB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0KICAgICB2b2lkIGFkZEZhY2luZ01vZGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkgeyBtX2ZhY2luZ01v
ZGUuYXBwZW5kKG1vZGUpOyB9CiAKICAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25z
dCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsg
fQotICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGFzcGVjdFJhdGlvKCkgY29uc3Qg
eyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oY29uc3Qg
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFz
cGVjdFJhdGlvOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0
aW8oKSBjb25zdCB7IHJldHVybiAqbV9hc3BlY3RSYXRpbzsgfQorICAgIHZvaWQgc2V0QXNwZWN0
UmF0aW8oY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3Bl
Y3RSYXRpbyA9IG1ha2VPcHRpb25hbChhc3BlY3RSYXRpbyk7IH0KIAogICAgIGJvb2wgc3VwcG9y
dHNWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRz
Vm9sdW1lKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUoKSBj
b25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQorICAgIGNv
bnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuICptX3Zv
bHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Um
IHZvbHVtZSkgeyBtX3ZvbHVtZSA9IG1ha2VPcHRpb25hbCh2b2x1bWUpOyB9CiAKICAgICBib29s
IHN1cHBvcnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc3VwcG9ydHNTYW1wbGVSYXRlKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJh
bmdlJiBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgdm9p
ZCBzZXRTYW1wbGVSYXRlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVJhdGUp
IHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UmIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiAqbV9zYW1wbGVSYXRlOyB9Cisg
ICAgdm9pZCBzZXRTYW1wbGVSYXRlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBs
ZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gbWFrZU9wdGlvbmFsKHNhbXBsZVJhdGUpOyB9CiAKICAg
ICBib29sIHN1cHBvcnRzU2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNTYW1wbGVTaXplKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFs
dWVPclJhbmdlJiBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVTaXplOyB9Ci0g
ICAgdm9pZCBzZXRTYW1wbGVTaXplKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBs
ZVNpemUpIHsgbV9zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTsgfQorICAgIGNvbnN0IENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiAqbV9zYW1wbGVTaXpl
OyB9CisgICAgdm9pZCBzZXRTYW1wbGVTaXplKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Um
IHNhbXBsZVNpemUpIHsgbV9zYW1wbGVTaXplID0gbWFrZU9wdGlvbmFsKHNhbXBsZVNpemUpOyB9
CiAKICAgICBlbnVtIGNsYXNzIEVjaG9DYW5jZWxsYXRpb24gOiBib29sIHsKICAgICAgICAgUmVh
ZE9ubHkgPSAwLApAQCAtMTk4LDE0ICsyNDcsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKTsKIAogcHJpdmF0ZToKLSAgICBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fd2lkdGg7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSBtX2hlaWdodDsKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fYXNwZWN0UmF0aW87Ci0g
ICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX2ZyYW1lUmF0ZTsKKyAgICBPcHRpb25hbDxDYXBh
YmlsaXR5VmFsdWVPclJhbmdlPiBtX3dpZHRoOworICAgIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2U+IG1faGVpZ2h0OworICAgIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U+
IG1fYXNwZWN0UmF0aW87CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gbV9m
cmFtZVJhdGU7CiAgICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX3Zv
bHVtZTsKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlUmF0ZTsKLSAgICBDYXBh
YmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlU2l6ZTsKKyAgICBPcHRpb25hbDxDYXBhYmlsaXR5
VmFsdWVPclJhbmdlPiBtX3ZvbHVtZTsKKyAgICBPcHRpb25hbDxDYXBhYmlsaXR5VmFsdWVPclJh
bmdlPiBtX3NhbXBsZVJhdGU7CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4g
bV9zYW1wbGVTaXplOwogICAgIEVjaG9DYW5jZWxsYXRpb24gbV9lY2hvQ2FuY2VsbGF0aW9uIHsg
RWNob0NhbmNlbGxhdGlvbjo6UmVhZE9ubHkgfTsKICAgICBBdG9tU3RyaW5nIG1fZGV2aWNlSWQ7
CiAgICAgQXRvbVN0cmluZyBtX2dyb3VwSWQ7CkBAIC0yMjQsMTAgKzI3MywxMCBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgICAgICA8PCBtX3ZvbHVtZQogICAgICAgICA8PCBtX3NhbXBsZVJhdGUKICAgICAg
ICAgPDwgbV9zYW1wbGVTaXplCisgICAgICAgIDw8IG1fZWNob0NhbmNlbGxhdGlvbgogICAgICAg
ICA8PCBtX2RldmljZUlkCiAgICAgICAgIDw8IG1fZ3JvdXBJZAotICAgICAgICA8PCBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzCi0gICAgICAgIDw8IG1fZWNob0NhbmNlbGxhdGlvbjsKKyAgICAgICAg
PDwgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
QEAgLTI0MSwxMCArMjkwLDEwIEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlYWx0aW1lTWVkaWFTb3VyCiAgICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX3ZvbHVtZSkKICAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fc2FtcGxlUmF0ZSkKICAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUoY2FwYWJpbGl0aWVzLm1fc2FtcGxlU2l6ZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNv
ZGUoY2FwYWJpbGl0aWVzLm1fZWNob0NhbmNlbGxhdGlvbikKICAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUoY2FwYWJpbGl0aWVzLm1fZGV2aWNlSWQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KGNhcGFiaWxpdGllcy5tX2dyb3VwSWQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFi
aWxpdGllcy5tX3N1cHBvcnRlZENvbnN0cmFpbnRzKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29k
ZShjYXBhYmlsaXRpZXMubV9lY2hvQ2FuY2VsbGF0aW9uKTsKKyAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUoY2FwYWJpbGl0aWVzLm1fc3VwcG9ydGVkQ29uc3RyYWludHMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkBAIC0yNTQsNyArMzAzLDYgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6
OlR5cGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3Jl
OjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpUeXBlLAotICAgICAgICBXZWJDb3JlOjpDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpUeXBlOjpVbmRlZmluZWQsCiAgICAgICAgIFdlYkNvcmU6OkNhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU6OkRvdWJsZSwKICAgICAgICAgV2ViQ29yZTo6Q2FwYWJp
bGl0eVZhbHVlT3JSYW5nZTo6VHlwZTo6VUxvbmcsCiAgICAgICAgIFdlYkNvcmU6OkNhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2U6OlR5cGU6OkRvdWJsZVJhbmdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTQ4ZTgzMjZhMmE3MzVlZjkyNGY4NzM3MmRj
Nzg2MzlkODIzOTMzMC4uNjk3OGY0Njg5MmEwMjM3YTE2YjQzN2YyM2E0ZGU5OGQyYTgyZmZmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0xNDYs
NyArMTQ2LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0
aW9uYWw8VD4+IHsKICAgICAgICAgZW5jb2RlciA8PCBvcHRpb25hbC52YWx1ZSgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBU
LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPFU+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFU+JiBvcHRpb25hbCkKICAgICB7CiAgICAgICAg
IGJvb2wgaXNFbmdhZ2VkOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5nYWdlZCkp
CkBAIC0xNTcsMTQgKzE1OCwzMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxPcHRpb25hbDxUPj4gewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAotICAgICAgICBUIHZhbHVlOworICAgICAgICBVIHZhbHVlOwogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBvcHRpb25hbCA9IFdURk1vdmUodmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVCwgc3RkOjplbmFibGVfaWZfdDwh
c3RkOjppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
T3B0aW9uYWw8VT4mIG9wdGlvbmFsKQorICAgIHsKKyAgICAgICAgYm9vbCBpc0VuZ2FnZWQ7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAoIWlzRW5nYWdlZCkgeworICAgICAgICAgICAgb3B0aW9u
YWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CisgICAgICAgIG9wdGlvbmFsID0gVTo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICByZXR1cm4g
ZGVjb2Rlci5pc1ZhbGlkKCk7CisgICAgfQorCiAgICAgc3RhdGljIE9wdGlvbmFsPE9wdGlvbmFs
PFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAgICAgICAgIE9wdGlvbmFsPGJv
b2w+IGlzRW5nYWdlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425546</attachid>
            <date>2021-04-08 15:18:56 -0700</date>
            <delta_ts>2021-04-08 16:20:38 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-224090-20210408151857.patch</filename>
            <type>text/plain</type>
            <size>51219</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY5NzY1OWYyZjVmMTM5
NDM0ZjI2MWVmYjU1NGQ4NTBmMzMzOWQzMS4uN2I3NTgyY2NlYzgyMjM1OWJmNTJkMjAzNGI1YzQ2
MmQzYTg4Yzc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAyMS0wNC0wOCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtDb3JlSVBDXSBFbmNv
ZGluZy9kZWNvZGluZyBvZiBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHRyYW5zbWl0
cyBwYWRkaW5nIGJ5dGVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjQwOTA+Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTk4MTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpUeXBlIGVudW0gYW5kCisgICAgICAgIHRoZSBWYWx1ZVVuaW9uIHVu
aW9uIHdpdGggYSBXVEY6OlZhcmlhbnQgY29udGFpbmluZyBvbmUgb2YgdGhlCisgICAgICAgIGZv
dXIgdHlwZXMgb2YgdmFsdWVzLCBpbmNsdWRpbmcgc3RkOjpwYWlyPD4gdG8gaG9sZCByYW5nZXMu
IFRoZQorICAgICAgICBEb3VibGVSYW5nZSBhbmQgTG9uZ1JhbmdlIElETCB0eXBlcyBhcmUgbm90
IHVzZWQgZm9yIGludGVybmFsCisgICAgICAgIHJlcHJlc2VudGF0aW9ucyB0byBrZWVwIHRoZXNl
IGNsYXNzZXMgc2ltcGxlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1hZGRFdmVudExpc3RlbmVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbWVkaWFz
dHJlYW0vY29uc3RyYWludC1pbnRyaW5zaWMtc2l6ZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL21lZGlhL21lZGlhLXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1pZnJhbWUtYWxsb3ct
YXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc3Ry
ZWFtL2dldC1kaXNwbGF5LW1lZGlhLWlmcmFtZS1hbGxvdy1hdHRyaWJ1dGUuaHRtbAorICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVj
b3JkL01lZGlhUmVjb3JkZXItYml0cmF0ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICB3ZWJy
dGMvYWRkSUNFQ2FuZGlkYXRlLWNsb3NlZC5odG1sCisgICAgICAgICAgICAgICB3ZWJydGMvaWNl
LWNhbmRpZGF0ZS1zZHBNTGluZUluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0Yy9saWJ3
ZWJydGMvZGVzY3JpcHRpb25HZXR0ZXJzLmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0Yy9wZWVy
Y29ubmVjdGlvbi1wYWdlLWNhY2hlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXR5RG91
YmxlUmFuZ2UpOiBEZWxldGUuCisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXR5SW50UmFuZ2Up
OiBEZWxldGUuCisgICAgICAgIC0gTW92ZSB0aGVzZSBpbnRvIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2U6OmFzRG91YmxlUmFuZ2UoKSBhbmQKKyAgICAgICAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
Ojphc0xvbmdSYW5nZSgpIHNvIHRoYXQgdGhlIG1fdmFsdWUKKyAgICAgICAgICB2YXJpYW50IGRv
ZXMgbm90IGhhdmUgdG8gYmUgZXhwb3NlZCB2aWEgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAgLSBTd2l0
Y2ggdG8gdXNlIDo6YXNEb3VibGVSYW5nZSgpIGFuZCA6OmFzTG9uZ1JhbmdlKCkuCisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIC0gQWRkIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3Bw
IHRvIHByb2plY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1
cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpmaXRuZXNzRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAtIFN3aXRjaCB0byB1c2UgOjph
c0RvdWJsZVJhbmdlKCkgYW5kIDo6YXNMb25nUmFuZ2UoKS4KKyAgICAgICAgLSBOT1RFOiBUaGlz
IGNoYW5nZXMgYmVoYXZpb3Igc2xpZ2h0bHkgaW4gdGhhdCByZXF1ZXN0aW5nIGEKKyAgICAgICAg
ICByYW5nZSBmcm9tIGEgc2luZ2xlIERvdWJsZS9VTG9uZyB2YWx1ZSB3aWxsIG5vIGxvbmdlciBy
ZXR1cm4KKyAgICAgICAgICBhbiB1bmluaXRpYWxpemVkIHZhbHVlIChwcmlvciB0byByMjc1MTQy
KSBvciB6ZXJvIGZvciB0aGUgbWF4CisgICAgICAgICAgdmFsdWUsIGJ1dCBpbnN0ZWFkIHJldHVy
biBhIHJhbmdlIHdoZXJlIG1pbiA9PSBtYXggPT0gdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmNwcDogQWRkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6YXNEb3VibGVSYW5nZSBj
b25zdCk6IEFkZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmFz
TG9uZ1JhbmdlIGNvbnN0KTogQWRkLgorICAgICAgICAtIFVzZSBDKysxNyBzdHJ1Y3R1cmVkIGJp
bmRpbmdzIHRvIGF2b2lkIHRoZSB1c2Ugb2YgLmZpcnN0IGFuZAorICAgICAgICAgIC5zZWNvbmQg
YWNjZXNzb3JzIGZyb20gc3RkOjpwYWlyIHRvIGdldCBtaW4vbWF4IHZhbHVlcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGUpOiBEZWxl
dGUuCisgICAgICAgIC0gUmVtb3ZlIGVudW0gaW4gZmF2b3Igb2YgV1RGOjpWYXJpYW50LgorICAg
ICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6Q2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSk6CisgICAgICAgIC0gRGVsZXRlIGRlZmF1bHQgY29uc3RydWN0b3Igc2luY2UgdGhlcmUg
aXMgbm8gbmVlZCB0byBjcmVhdGUgYW4KKyAgICAgICAgICBlbXB0eSBvYmplY3QuCisgICAgICAg
IC0gVXBkYXRlIGNvbnN0cnVjdG9ycyBmb3IgV1RGOjpWYXJpYW50LgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6dHlwZSBjb25zdCk6IERlbGV0ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OnJhbmdlTWluIGNvbnN0KTogRGVsZXRl
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6cmFuZ2VNYXggY29u
c3QpOiBEZWxldGUuCisgICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjp2
YWx1ZSBjb25zdCk6IERlbGV0ZS4KKyAgICAgICAgLSBSZW1vdmUgdW51c2VkIG1ldGhvZHMuCisg
ICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6ZGVjb2RlKToKKyAgICAg
ICAgLSBQcm92aWRlIElQQyBlbmNvZGVyIGFuZCBkZWNvZGVyIHRoYXQgZG9uJ3QgcmVxdWlyZSBh
IGRlZmF1bHQKKyAgICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2U6OmFzRG91YmxlUmFuZ2UgY29uc3QpOiBBZGQuCisgICAgICAgIChX
ZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjphc0xvbmdSYW5nZSBjb25zdCk6IEFkZC4K
KyAgICAgICAgLSBNb3ZlIFdlYkNvcmU6OmNhcGFiaWxpdHlEb3VibGVSYW5nZSgpIGFuZAorICAg
ICAgICAgIFdlYkNvcmU6OmNhcGFiaWxpdHlJbnRSYW5nZSgpIGZyb20gTWVkaWFTdHJlYW1UcmFj
ay5jcHAgdG8KKyAgICAgICAgICBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEhlaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpmcmFt
ZVJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6c2V0RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OmFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnZvbHVtZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpz
ZXRWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllczo6c2FtcGxlUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjpzZXRTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNhbXBsZVNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U2FtcGxlU2l6
ZSk6CisgICAgICAgIC0gTWFrZSBhbGwgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBpbnN0YW5jZSB2
YXJpYWJsZXMgT3B0aW9uYWw8PgorICAgICAgICAgIHNpbmNlIHRoZXkgYXJlLCBpbiBmYWN0LCBh
bGwgb3B0aW9uYWwgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmRlY29kZSk6CisgICAgICAgIC0gVXBkYXRlIG9yZGVy
IG9mIGVuY29kZWQvZGVjb2RlZCBpbnN0YW5jZSB2YXJpYWJsZXMgdG8gbWF0Y2gKKyAgICAgICAg
ICB0aGUgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MuCisgICAgICAgIChzdHJ1
Y3QgV1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU+
KToKKyAgICAgICAgLSBSZW1vdmUgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZTo6VW5kZWZp
bmVkIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvQ2FwdHVy
ZVNvdXJjZTo6dXBkYXRlQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNhcGFiaWxpdGllcyk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIHVzZSBuZXcgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBjb25zdHJ1Y3Rv
cnMuCisKIDIwMjEtMDQtMDMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVQlNhbjogUmVuZGVyVmlldy5jcHA6ODMxOjk6IHJ1bnRpbWUgZXJyb3I6IGxvYWQg
b2YgdmFsdWUgbm5uLCB3aGljaCBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdHlwZSAnYm9vbCcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjVkNjc1MTdmZjIwYzc1Yzg3MGU2MmUwMTg5YWEyYjlkOWU0YjU4MS4uMDBl
YjRjYWEzOGE3ODcxOGNjMjcyOTIzMjZhZDQzYjk1MTUyZmZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMS0wNC0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb3JlSVBDXSBFbmNvZGluZy9kZWNvZGluZyBvZiBXZWJDb3JlOjpDYXBhYmls
aXR5VmFsdWVPclJhbmdlIHRyYW5zbWl0cyBwYWRkaW5nIGJ5dGVzCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8yMjQwOTA+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTk4MTY2MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE9w
dGlvbmFsPFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgLSBBZGQgY29uc3RleHByIEhhc01vZGVybkRl
Y29kZXJUPFY+IGNoZWNrLiBUaGlzIGFsc28gcmVtb3ZlcworICAgICAgICAgIHRoZSBuZWVkIGZv
ciBhIGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIHRoZSBkZWNvZGVkIG9iamVjdC4KKwogMjAyMS0w
NC0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0g
UG93ZXIgcmVncmVzc2lvbjogYXVkaW8gaGFyZHdhcmUgaXMgY29uZmlndXJlZCBmb3IgMTI4IGZy
YW1lIHByZWZlcnJlZCBidWZmZXIgc2l6ZSBkdXJpbmcgVmlkZW9BdWRpbyBwbGF5YmFjawpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKaW5kZXggNmMxZjE3YTAzZjc5MjI1MWE1MmJhOGFkNDAwMmRlOGFiYmE3YmU0Ny4u
MGU2NTVkMjM2NDI1MTExY2UyMDU3MTNmZWYxOTFiMDRhMTlhMzgwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEVyaWNzc29u
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTI3Niw0NiArMjc2LDYgQEAgTWVkaWFTdHJlYW1UcmFjazo6VHJhY2tTZXR0aW5n
cyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RhdGljIERvdWJsZVJhbmdlIGNhcGFiaWxpdHlEb3VibGVSYW5nZShjb25zdCBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2YWx1ZSkKLXsKLSAgICBEb3VibGVSYW5nZSByYW5nZTsK
LSAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewotICAgIGNhc2UgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZTo6RG91YmxlOgotICAgICAgICByYW5nZS5taW4gPSB2YWx1ZS52YWx1ZSgpLmFzRG91Ymxl
OwotICAgICAgICByYW5nZS5tYXggPSByYW5nZS5taW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2U6Ci0gICAgICAgIHJhbmdlLm1p
biA9IHZhbHVlLnJhbmdlTWluKCkuYXNEb3VibGU7Ci0gICAgICAgIHJhbmdlLm1heCA9IHZhbHVl
LnJhbmdlTWF4KCkuYXNEb3VibGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6VW5kZWZpbmVkOgotICAgIGNhc2UgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZTo6VUxvbmc6Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlOgot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJhbmdlOwot
fQotCi1zdGF0aWMgTG9uZ1JhbmdlIGNhcGFiaWxpdHlJbnRSYW5nZShjb25zdCBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlJiB2YWx1ZSkKLXsKLSAgICBMb25nUmFuZ2UgcmFuZ2U7Ci0gICAgc3dpdGNo
ICh2YWx1ZS50eXBlKCkpIHsKLSAgICBjYXNlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25n
OgotICAgICAgICByYW5nZS5taW4gPSB2YWx1ZS52YWx1ZSgpLmFzSW50OwotICAgICAgICByYW5n
ZS5tYXggPSByYW5nZS5taW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZTo6VUxvbmdSYW5nZToKLSAgICAgICAgcmFuZ2UubWluID0gdmFsdWUucmFuZ2VN
aW4oKS5hc0ludDsKLSAgICAgICAgcmFuZ2UubWF4ID0gdmFsdWUucmFuZ2VNYXgoKS5hc0ludDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVbmRlZmlu
ZWQ6Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGU6Ci0gICAgY2FzZSBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZToKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiByYW5nZTsKLX0KLQogc3RhdGljIFZlY3RvcjxT
dHJpbmc+IGNhcGFiaWxpdHlTdHJpbmdWZWN0b3IoY29uc3QgVmVjdG9yPFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiYgbW9kZXMpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OwpAQCAtMzQwLDIxICszMDAsMjEgQEAgTWVkaWFTdHJlYW1UcmFjazo6VHJh
Y2tDYXBhYmlsaXRpZXMgTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29uc3QK
ICAgICBhdXRvIGNhcGFiaWxpdGllcyA9IG1fcHJpdmF0ZS0+Y2FwYWJpbGl0aWVzKCk7CiAgICAg
VHJhY2tDYXBhYmlsaXRpZXMgcmVzdWx0OwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNX
aWR0aCgpKQotICAgICAgICByZXN1bHQud2lkdGggPSBjYXBhYmlsaXR5SW50UmFuZ2UoY2FwYWJp
bGl0aWVzLndpZHRoKCkpOworICAgICAgICByZXN1bHQud2lkdGggPSBjYXBhYmlsaXRpZXMud2lk
dGgoKS5hc0xvbmdSYW5nZSgpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQo
KSkKLSAgICAgICAgcmVzdWx0LmhlaWdodCA9IGNhcGFiaWxpdHlJbnRSYW5nZShjYXBhYmlsaXRp
ZXMuaGVpZ2h0KCkpOworICAgICAgICByZXN1bHQuaGVpZ2h0ID0gY2FwYWJpbGl0aWVzLmhlaWdo
dCgpLmFzTG9uZ1JhbmdlKCk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0FzcGVjdFJh
dGlvKCkpCi0gICAgICAgIHJlc3VsdC5hc3BlY3RSYXRpbyA9IGNhcGFiaWxpdHlEb3VibGVSYW5n
ZShjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8oKSk7CisgICAgICAgIHJlc3VsdC5hc3BlY3RSYXRp
byA9IGNhcGFiaWxpdGllcy5hc3BlY3RSYXRpbygpLmFzRG91YmxlUmFuZ2UoKTsKICAgICBpZiAo
Y2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpCi0gICAgICAgIHJlc3VsdC5mcmFtZVJh
dGUgPSBjYXBhYmlsaXR5RG91YmxlUmFuZ2UoY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpKTsKKyAg
ICAgICAgcmVzdWx0LmZyYW1lUmF0ZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKS5hc0RvdWJs
ZVJhbmdlKCk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0ZhY2luZ01vZGUoKSkKICAg
ICAgICAgcmVzdWx0LmZhY2luZ01vZGUgPSBjYXBhYmlsaXR5U3RyaW5nVmVjdG9yKGNhcGFiaWxp
dGllcy5mYWNpbmdNb2RlKCkpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNWb2x1bWUo
KSkKLSAgICAgICAgcmVzdWx0LnZvbHVtZSA9IGNhcGFiaWxpdHlEb3VibGVSYW5nZShjYXBhYmls
aXRpZXMudm9sdW1lKCkpOworICAgICAgICByZXN1bHQudm9sdW1lID0gY2FwYWJpbGl0aWVzLnZv
bHVtZSgpLmFzRG91YmxlUmFuZ2UoKTsKICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzU2Ft
cGxlUmF0ZSgpKQotICAgICAgICByZXN1bHQuc2FtcGxlUmF0ZSA9IGNhcGFiaWxpdHlJbnRSYW5n
ZShjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpKTsKKyAgICAgICAgcmVzdWx0LnNhbXBsZVJhdGUg
PSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpLmFzTG9uZ1JhbmdlKCk7CiAgICAgaWYgKGNhcGFi
aWxpdGllcy5zdXBwb3J0c1NhbXBsZVNpemUoKSkKLSAgICAgICAgcmVzdWx0LnNhbXBsZVNpemUg
PSBjYXBhYmlsaXR5SW50UmFuZ2UoY2FwYWJpbGl0aWVzLnNhbXBsZVNpemUoKSk7CisgICAgICAg
IHJlc3VsdC5zYW1wbGVTaXplID0gY2FwYWJpbGl0aWVzLnNhbXBsZVNpemUoKS5hc0xvbmdSYW5n
ZSgpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCkpCiAg
ICAgICAgIHJlc3VsdC5lY2hvQ2FuY2VsbGF0aW9uID0gY2FwYWJpbGl0eUJvb2xlYW5WZWN0b3Io
Y2FwYWJpbGl0aWVzLmVjaG9DYW5jZWxsYXRpb24oKSk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5z
dXBwb3J0c0RldmljZUlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDllNGZhNjBjY2RkYWZkYzE1ZGQ2
NTEzOTFmMWIyMTE2YjM3MzRhNDUuLjE3ZGI0ZjczNGVlYTIwOTk1MzQ3YzFhOTUxNmJkY2Q0ZDI4
MmFjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTAwLDYgKzIxMDAsNyBAQCBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcAogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZUZhY3RvcnkuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzUzMDJkYjBkMGM2ODIyMzFmNTYyZmU5MDhjOWViMTUxMWIz
Zjk2MS4uOWQxYzgxNmZiODNhZWQ0OGYwMzliNjZkNWE5M2ZkNTVmZjE3Mjc1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODIx
OSw2ICs4MjE5LDcgQEAKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlvblJh
bmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25SYW5n
ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjkyNTM2OUE4ODAw
QTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFsRXZlbnRIYW5kbGVy
cytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NEMzRkUwQjI2MUU5RDE2MDBENDBCQkEg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhl
bWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NTI5LDYgKzE3NTMwLDcgQEAKIAkJCQk1Q0REODMzQTFFNDMyNEJCMDA2MjFFOTIgLyog
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmggKi8sCiAJCQkJNEE0RjY1NkIxQUE5OTdGMTAw
RTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAogCQkJCTRBNEY2NTZDMUFBOTk3
RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCisJCQkJNDRDM0ZFMEIyNjFF
OUQxNjAwRDQwQkJBIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3BwICovLAog
CQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzLmggKi8sCiAJCQkJNEEwRkZBOUYxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwICovLAogCQkJCTRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4
IDI3OGQxOTY3OGRiM2VhMzQ0ZDU3NzMxNWZkZjAwMzBjMTBlOTBjYTAuLjMxZmYwMmVhODUwZDJm
NTczZjlkNDQ5YmNlNGNmOTQ1YjY1NWM0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIENvcHlyaWdodCAoQykgMjAxNSBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMTUsMTYgKzMxNSwxNiBA
QCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRp
b25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogICAgIGlmICh3aWR0aENvbnN0cmFpbnQgJiYgY2Fw
YWJpbGl0aWVzLnN1cHBvcnRzV2lkdGgoKSkgewogICAgICAgICBkb3VibGUgY29uc3RyYWludERp
c3RhbmNlID0gZml0bmVzc0Rpc3RhbmNlKCp3aWR0aENvbnN0cmFpbnQpOwogICAgICAgICBpZiAo
c3RkOjppc2luZihjb25zdHJhaW50RGlzdGFuY2UpKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdl
ID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSBmYWlsZWQgd2lkdGggY29u
c3RyYWludCwgY2FwYWJpbGl0aWVzIGFyZSBbJWQsICVkXSIsIHJhbmdlLnJhbmdlTWluKCkuYXNJ
bnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNh
cGFiaWxpdGllcy53aWR0aCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSBmYWlsZWQg
d2lkdGggY29uc3RyYWludCwgY2FwYWJpbGl0aWVzIGFyZSBbJWQsICVkXSIsICpyYW5nZS5taW4s
ICpyYW5nZS5tYXgpOwogICAgICAgICAgICAgYmFkQ29uc3RyYWludCA9IHdpZHRoQ29uc3RyYWlu
dC0+bmFtZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAg
ICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKICAg
ICAgICAgaWYgKHdpZHRoQ29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgewotICAgICAgICAgICAg
YXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICAgICAgd2lkdGggPSB3
aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS53aWR0aCgpLCBy
YW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50KTsKKyAgICAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMud2lkdGgoKS5hc0xvbmdSYW5nZSgpOworICAg
ICAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdl
KHNpemUoKS53aWR0aCgpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMzMyLDE2ICszMzIsMTYgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgKICAgICBp
ZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQoKSkgewog
ICAgICAgICBkb3VibGUgY29uc3RyYWludERpc3RhbmNlID0gZml0bmVzc0Rpc3RhbmNlKCpoZWln
aHRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoY29uc3RyYWludERpc3RhbmNl
KSkgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5oZWlnaHQoKTsKLSAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXpl
QW5kRnJhbWVSYXRlIGZhaWxlZCBoZWlnaHQgY29uc3RyYWludCwgY2FwYWJpbGl0aWVzIGFyZSBb
JWQsICVkXSIsIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQp
OworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5oZWlnaHQoKS5hc0xvbmdS
YW5nZSgpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWFsdGltZU1lZGlhU291cmNlOjpz
dXBwb3J0c1NpemVBbmRGcmFtZVJhdGUgZmFpbGVkIGhlaWdodCBjb25zdHJhaW50LCBjYXBhYmls
aXRpZXMgYXJlIFslZCwgJWRdIiwgKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgICAg
ICBiYWRDb25zdHJhaW50ID0gaGVpZ2h0Q29uc3RyYWludC0+bmFtZSgpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihk
aXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKICAgICAgICAgaWYgKGhlaWdodENvbnN0cmFp
bnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRp
ZXMuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50LT52YWx1
ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkuaGVpZ2h0KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJ
bnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNh
cGFiaWxpdGllcy5oZWlnaHQoKS5hc0xvbmdSYW5nZSgpOworICAgICAgICAgICAgaGVpZ2h0ID0g
aGVpZ2h0Q29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgpLmhlaWdodCgp
LCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzQ5LDE2
ICszNDksMTYgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFt
ZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgKICAgICBpZiAoZnJhbWVSYXRlQ29u
c3RyYWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkgewogICAgICAgICBk
b3VibGUgY29uc3RyYWludERpc3RhbmNlID0gZml0bmVzc0Rpc3RhbmNlKCpmcmFtZVJhdGVDb25z
dHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoY29uc3RyYWludERpc3RhbmNlKSkgewot
ICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKTsKLSAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5k
RnJhbWVSYXRlIGZhaWxlZCBmcmFtZSByYXRlIGNvbnN0cmFpbnQsIGNhcGFiaWxpdGllcyBhcmUg
WyVkLCAlZF0iLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
KTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCkuYXNE
b3VibGVSYW5nZSgpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWFsdGltZU1lZGlhU291
cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUgZmFpbGVkIGZyYW1lIHJhdGUgY29uc3RyYWlu
dCwgY2FwYWJpbGl0aWVzIGFyZSBbJWEsICVhXSIsICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwog
ICAgICAgICAgICAgYmFkQ29uc3RyYWludCA9IGZyYW1lUmF0ZUNvbnN0cmFpbnQtPm5hbWUoKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGRpc3RhbmNl
ID0gc3RkOjptaW4oZGlzdGFuY2UsIGNvbnN0cmFpbnREaXN0YW5jZSk7CiAgICAgICAgIGlmIChm
cmFtZVJhdGVDb25zdHJhaW50LT5pc01hbmRhdG9yeSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHJh
bmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpOwotICAgICAgICAgICAgZnJhbWVSYXRlID0g
ZnJhbWVSYXRlQ29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2UodGhpcy0+ZnJhbWVS
YXRlKCksIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3Vi
bGUpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKS5h
c0RvdWJsZVJhbmdlKCk7CisgICAgICAgICAgICBmcmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJh
aW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5mcmFtZVJhdGUoKSwgKnJhbmdlLm1p
biwgKnJhbmdlLm1heCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM5MCw4ICszOTAsOCBAQCBk
b3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29u
c3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNX
aWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNh
cGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWlu
dD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJh
bmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVz
LndpZHRoKCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0
cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqcmFuZ2UubWluLCAqcmFuZ2UubWF4
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00MDAsOCArNDAwLDggQEAgZG91YmxlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzSGVpZ2h0KCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0
aWVzLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29u
c3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJh
bmdlTWF4KCkuYXNJbnQpOworICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdo
dCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50
Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDEwLDggKzQxMCw4IEBAIGRvdWJsZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25z
dHJhaW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5zdXBwb3J0c0ZyYW1lUmF0ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGll
cy5mcmFtZVJhdGUoKTsKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+
KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZShyYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCBy
YW5nZS5yYW5nZU1heCgpLmFzRG91YmxlKTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxp
dGllcy5mcmFtZVJhdGUoKS5hc0RvdWJsZVJhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2Fz
dDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1p
biwgKnJhbmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDIwLDggKzQyMCw4
IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVk
aWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5zdXBw
b3J0c0FzcGVjdFJhdGlvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBhdXRv
IHJhbmdlID0gY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIHJldHVybiBkb3du
Y2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UocmFuZ2Uu
cmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSk7CisgICAgICAg
IGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8oKS5hc0RvdWJsZVJhbmdlKCk7
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KS5m
aXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtNDMwLDggKzQzMCw4IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpm
aXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAg
ICBpZiAoIWNhcGFiaWxpdGllcy5zdXBwb3J0c1ZvbHVtZSgpKQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy52b2x1bWUoKTsKLSAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NE
aXN0YW5jZShyYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91
YmxlKTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy52b2x1bWUoKS5hc0RvdWJs
ZVJhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25z
dHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtNDQzLDggKzQ0Myw4IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlh
U291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50
KQogICAgICAgICBpZiAoYXV0byBkaXNjcmV0ZVJhdGVzID0gZGlzY3JldGVTYW1wbGVSYXRlcygp
KQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQp
LmZpdG5lc3NEaXN0YW5jZSgqZGlzY3JldGVSYXRlcyk7CiAKLSAgICAgICAgYXV0byByYW5nZSA9
IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRD
b25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5h
c0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBh
YmlsaXRpZXMuc2FtcGxlUmF0ZSgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1p
biwgKnJhbmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDU2LDggKzQ1Niw4
IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVk
aWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoYXV0byBkaXNjcmV0ZVNpemVz
ID0gZGlzY3JldGVTYW1wbGVTaXplcygpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PElu
dENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlzY3JldGVTaXplcyk7
CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7Ci0gICAg
ICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlz
dGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7Cisg
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgpLmFzTG9uZ1Jhbmdl
KCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5m
aXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtNTYxLDggKzU2MSw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBw
bHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAg
aWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNBc3BlY3RSYXRpbygpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8oKTsK
LSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50
Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8oKSwgeyB9LCByYW5nZS5yYW5nZU1pbigpLmFzRG91
YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCAqdGhpcywgJlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldEFzcGVjdFJhdGlvKTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5h
c3BlY3RSYXRpbygpLmFzRG91YmxlUmFuZ2UoKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3Ry
YWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8o
KSwgeyB9LCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4LCAqdGhpcywgJlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldEFzcGVjdFJhdGlvKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01NzEsOCAr
NTcxLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnQoY29uc3Qg
TWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5z
dXBwb3J0c1ZvbHVtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcmFu
Z2UgPSBjYXBhYmlsaXRpZXMudm9sdW1lKCk7Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCksIHZvbHVtZSgpLCB7IH0s
IHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsICp0
aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKTsKKyAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy52b2x1bWUoKS5hc0RvdWJsZVJhbmdlKCk7CisgICAgICAgIGFwcGx5
TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCks
IHZvbHVtZSgpLCB7IH0sICpyYW5nZS5taW4sICpyYW5nZS5tYXgsICp0aGlzLCAmUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01ODEs
OCArNTgxLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnQoY29u
c3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGll
cy5zdXBwb3J0c1NhbXBsZVJhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBh
dXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnNhbXBsZVJhdGUoKTsKLSAgICAgICAgYXBwbHlOdW1l
cmljQ29uc3RyYWludChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KSwgc2FtcGxl
UmF0ZSgpLCBkaXNjcmV0ZVNhbXBsZVJhdGVzKCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJh
bmdlLnJhbmdlTWF4KCkuYXNJbnQsICp0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2Ft
cGxlUmF0ZSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgp
LmFzTG9uZ1JhbmdlKCk7CisgICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8
SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNhbXBsZVJhdGUoKSwgZGlzY3JldGVTYW1wbGVS
YXRlcygpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4LCAqdGhpcywgJlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldFNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTU5MSw4ICs1
OTEsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1
cHBvcnRzU2FtcGxlU2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8g
cmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgpOwotICAgICAgICBhcHBseU51bWVyaWND
b25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzYW1wbGVTaXpl
KCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwg
KnRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKTsKKyAgICAgICAgYXV0
byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCkuYXNMb25nUmFuZ2UoKTsKKyAgICAg
ICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJh
aW50KSwgc2FtcGxlU2l6ZSgpLCB7IH0sICpyYW5nZS5taW4sICpyYW5nZS5tYXgsICp0aGlzLCAm
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtODk1LDggKzg5NSw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlD
b25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAgICAgaWYg
KGNvbnN0IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZpbmQoTWVk
aWFDb25zdHJhaW50VHlwZTo6V2lkdGgpKSB7CiAgICAgICAgIEFTU0VSVChjb25zdHJhaW50LT5p
c0ludCgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c1dpZHRoKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMud2lkdGgoKTsKLSAgICAgICAgICAg
IHdpZHRoID0gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oKmNvbnN0cmFpbnQpLnZhbHVlRm9yQ2Fw
YWJpbGl0eVJhbmdlKHNpemUoKS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5n
ZS5yYW5nZU1heCgpLmFzSW50KTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRp
ZXMud2lkdGgoKS5hc0xvbmdSYW5nZSgpOworICAgICAgICAgICAgd2lkdGggPSBkb3duY2FzdDxJ
bnRDb25zdHJhaW50PigqY29uc3RyYWludCkudmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgp
LndpZHRoKCksICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC05MDQsOCArOTA0LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFp
bnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFpbnQKICAgICBpZiAoY29uc3Qg
TWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3RyYWludHMuZmluZChNZWRpYUNvbnN0
cmFpbnRUeXBlOjpIZWlnaHQpKSB7CiAgICAgICAgIEFTU0VSVChjb25zdHJhaW50LT5pc0ludCgp
KTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0hlaWdodCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpOwotICAgICAgICAgICAgaGVp
Z2h0ID0gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oKmNvbnN0cmFpbnQpLnZhbHVlRm9yQ2FwYWJp
bGl0eVJhbmdlKHNpemUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2Uu
cmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVz
LmhlaWdodCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAgICBoZWlnaHQgPSBkb3duY2FzdDxJ
bnRDb25zdHJhaW50PigqY29uc3RyYWludCkudmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgp
LmhlaWdodCgpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtOTEzLDggKzkxMyw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJh
aW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAgICAgaWYgKGNvbnN0
IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZpbmQoTWVkaWFDb25z
dHJhaW50VHlwZTo6RnJhbWVSYXRlKSkgewogICAgICAgICBBU1NFUlQoY29uc3RyYWludC0+aXNE
b3VibGUoKSk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkg
ewotICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKTsKLSAg
ICAgICAgICAgIGZyYW1lUmF0ZSA9IGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KCpjb25zdHJh
aW50KS52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5mcmFtZVJhdGUoKSwgcmFuZ2UucmFu
Z2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSk7CisgICAgICAgICAg
ICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpLmFzRG91YmxlUmFuZ2UoKTsK
KyAgICAgICAgICAgIGZyYW1lUmF0ZSA9IGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KCpjb25z
dHJhaW50KS52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5mcmFtZVJhdGUoKSwgKnJhbmdl
Lm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA1ZDZiNTAwZjY0MDU4NzZk
ZDNmM2NkN2ZiNTNhYmIzMzMyMWY5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXZWJDb3JlOjpEb3VibGVSYW5nZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
Ojphc0RvdWJsZVJhbmdlKCkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpEb3VibGVSYW5nZSByYW5n
ZTsKKyAgICBzd2l0Y2hPbihtX3ZhbHVlLAorICAgICAgICBbJl0gKENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U6OkRvdWJsZSB2YWx1ZSkgeworICAgICAgICAgICAgcmFuZ2UubWluID0gdmFsdWU7Cisg
ICAgICAgICAgICByYW5nZS5tYXggPSB2YWx1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChj
b25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZSYgdmFsdWUpIHsKKyAgICAg
ICAgICAgIGF1dG8gW21pbiwgbWF4XSA9IHZhbHVlOworICAgICAgICAgICAgcmFuZ2UubWluID0g
bWluOworICAgICAgICAgICAgcmFuZ2UubWF4ID0gbWF4OworICAgICAgICB9LAorICAgICAgICBb
Jl0gKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25nKSB7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlJikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKyAgICApOworICAgIHJldHVybiByYW5nZTsKK30KKworTG9uZ1Jh
bmdlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmFzTG9uZ1JhbmdlKCkgY29uc3QKK3sKKyAgICBM
b25nUmFuZ2UgcmFuZ2U7CisgICAgc3dpdGNoT24obV92YWx1ZSwKKyAgICAgICAgWyZdIChDYXBh
YmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGUpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U6OkRvdWJsZVJhbmdlJikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmcg
dmFsdWUpIHsKKyAgICAgICAgICAgIHJhbmdlLm1pbiA9IHZhbHVlOworICAgICAgICAgICAgcmFu
Z2UubWF4ID0gdmFsdWU7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSYgdmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8gW21p
biwgbWF4XSA9IHZhbHVlOworICAgICAgICAgICAgcmFuZ2UubWluID0gbWluOworICAgICAgICAg
ICAgcmFuZ2UubWF4ID0gbWF4OworICAgICAgICB9CisgICAgKTsKKyAgICByZXR1cm4gcmFuZ2U7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgKaW5kZXggMjQw
ZmQ0OTY3MmJjZTgzNjdlYTcyMjlhNTZkN2E0ZTdjOGVmNmJhYi4uNDNjYWNmNThiNGY5NGVhMDVm
ZDc2ZWNkOWMzNmZkZmU1N2RhZDIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxMyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAorI2luY2x1ZGUgIkRvdWJsZVJhbmdlLmgiCisjaW5jbHVkZSAiTG9uZ1JhbmdlLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0Vu
dW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApAQCAtMzgsOTUg
KzQxLDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSB7CiBwdWJsaWM6Ci0KLSAgICBlbnVtIFR5cGUgewotICAgICAgICBVbmRlZmluZWQsCi0g
ICAgICAgIERvdWJsZSwKLSAgICAgICAgVUxvbmcsCi0gICAgICAgIERvdWJsZVJhbmdlLAotICAg
ICAgICBVTG9uZ1JhbmdlLAotICAgIH07Ci0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9Ci0KLSAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKLSAgICAgICAgZG91YmxlIGFzRG91
YmxlOwotICAgICAgICBpbnQgYXNJbnQ7Ci0gICAgfTsKLQotICAgIENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UoKQotICAgICAgICA6IG1fdHlwZShVbmRlZmluZWQpCisgICAgdXNpbmcgVUxvbmcgPSBp
bnQ7CisgICAgdXNpbmcgRG91YmxlID0gZG91YmxlOworICAgIHVzaW5nIFVMb25nUmFuZ2UgPSBz
dGQ6OnBhaXI8aW50LCBpbnQ+OworICAgIHVzaW5nIERvdWJsZVJhbmdlID0gc3RkOjpwYWlyPGRv
dWJsZSwgZG91YmxlPjsKKyAgICB1c2luZyBWYWx1ZU9yUmFuZ2UgPSBXVEY6OlZhcmlhbnQ8VUxv
bmcsIFVMb25nUmFuZ2UsIERvdWJsZSwgRG91YmxlUmFuZ2U+OworCisgICAgQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSgpID0gZGVsZXRlOworICAgIGV4cGxpY2l0IENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UoVUxvbmcgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZShVTG9uZ1JhbmdlIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFs
dWUpIHsgfQorICAgIGV4cGxpY2l0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoRG91YmxlIHZhbHVl
KQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpIHsgfQorICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UoRG91YmxlUmFuZ2UgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisgICAg
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZShWYWx1ZU9yUmFuZ2UmJiB2YWx1ZSkKKyAgICAgICAgOiBt
X3ZhbHVlKFdURk1vdmUodmFsdWUpKSB7IH0KKworICAgIFdlYkNvcmU6OkRvdWJsZVJhbmdlIGFz
RG91YmxlUmFuZ2UoKSBjb25zdDsKKyAgICBMb25nUmFuZ2UgYXNMb25nUmFuZ2UoKSBjb25zdDsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1fdmFsdWU7CiAgICAgfQogCi0g
ICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShkb3VibGUgdmFsdWUpCi0gICAgICAgIDogbV90eXBl
KERvdWJsZSkKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAg
ICAgICBtX21pbk9yVmFsdWUuYXNEb3VibGUgPSB2YWx1ZTsKKyAgICAgICAgT3B0aW9uYWw8VmFs
dWVPclJhbmdlPiB2YWx1ZTsKKyAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKKyAgICAgICAgaWYg
KCF2YWx1ZSkgeworICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZShXVEZNb3ZlKCp2YWx1ZSkpOwogICAgIH0KIAotICAgIENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UoaW50IHZhbHVlKQotICAgICAgICA6IG1fdHlwZShVTG9uZykKLSAgICB7
Ci0gICAgICAgIG1fbWluT3JWYWx1ZS5hc0ludCA9IHZhbHVlOwotICAgIH0KLQotICAgIENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UoZG91YmxlIG1pbiwgZG91YmxlIG1heCkKLSAgICAgICAgOiBtX3R5
cGUoRG91YmxlUmFuZ2UpCi0gICAgewotICAgICAgICBtX21pbk9yVmFsdWUuYXNEb3VibGUgPSBt
aW47Ci0gICAgICAgIG1fbWF4LmFzRG91YmxlID0gbWF4OwotICAgIH0KLSAgICAKLSAgICBDYXBh
YmlsaXR5VmFsdWVPclJhbmdlKGludCBtaW4sIGludCBtYXgpCi0gICAgICAgIDogbV90eXBlKFVM
b25nUmFuZ2UpCi0gICAgewotICAgICAgICBtX21pbk9yVmFsdWUuYXNJbnQgPSBtaW47Ci0gICAg
ICAgIG1fbWF4LmFzSW50ID0gbWF4OwotICAgIH0KLQotICAgIGNvbnN0IFZhbHVlVW5pb24mIHJh
bmdlTWluKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRG91YmxlUmFu
Z2UgfHwgbV90eXBlID09IFVMb25nUmFuZ2UpOwotICAgICAgICByZXR1cm4gbV9taW5PclZhbHVl
OwotICAgIH0KLQotICAgIGNvbnN0IFZhbHVlVW5pb24mIHJhbmdlTWF4KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRG91YmxlUmFuZ2UgfHwgbV90eXBlID09IFVMb25n
UmFuZ2UpOwotICAgICAgICByZXR1cm4gbV9tYXg7Ci0gICAgfQotCi0gICAgY29uc3QgVmFsdWVV
bmlvbiYgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBEb3Vi
bGUgfHwgbV90eXBlID09IFVMb25nKTsKLSAgICAgICAgcmV0dXJuIG1fbWluT3JWYWx1ZTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYpOwotCiBw
cml2YXRlOgotICAgIFZhbHVlVW5pb24gbV9taW5PclZhbHVlIHsgfTsKLSAgICBWYWx1ZVVuaW9u
IG1fbWF4IHsgfTsKLSAgICBUeXBlIG1fdHlwZSB7IFVuZGVmaW5lZCB9OworICAgIFZhbHVlT3JS
YW5nZSBtX3ZhbHVlOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oJm1fbWluT3JWYWx1ZSksIHNpemVvZihWYWx1ZVVuaW9uKSwgYWxpZ25vZihWYWx1ZVVu
aW9uKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oJm1fbWF4KSwgc2l6ZW9mKFZhbHVlVW5pb24pLCBhbGlnbm9mKFZh
bHVlVW5pb24pKTsKLSAgICBlbmNvZGVyIDw8IG1fdHlwZTsKLX0KLQotdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KLWJvb2wgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlT3JSYW5nZSkKLXsKLSAgICByZXR1
cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oJnZhbHVlT3JSYW5nZS5tX21pbk9yVmFsdWUpLCBzaXplb2YoVmFsdWVVbmlvbiksIGFsaWdu
b2YoVmFsdWVVbmlvbikpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZU9yUmFuZ2UubV9tYXgpLCBzaXplb2Yo
VmFsdWVVbmlvbiksIGFsaWdub2YoVmFsdWVVbmlvbikpCi0gICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKHZhbHVlT3JSYW5nZS5tX3R5cGUpOwotfQotCiBjbGFzcyBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzIHsKIHB1YmxpYzoKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzKCkgPSBkZWZhdWx0OwpAQCAtMTQ0LDM2ICs5OSwzNiBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJh
aW50cy5zdXBwb3J0c1dpZHRoKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
JiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICB2b2lkIHNldFdpZHRoKGNv
bnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQor
ICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
Km1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UmIHdpZHRoKSB7IG1fd2lkdGggPSBtYWtlT3B0aW9uYWwod2lkdGgpOyB9CiAKICAgICBib29s
IHN1cHBvcnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c0hlaWdodCgpOyB9Ci0gICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB2b2lkIHNldEhlaWdodChjb25z
dCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0K
KyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biAqbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodChjb25zdCBDYXBhYmlsaXR5VmFsdWVP
clJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQgPSBtYWtlT3B0aW9uYWwoaGVpZ2h0KTsgfQogCiAg
ICAgYm9vbCBzdXBwb3J0c0ZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNGcmFtZVJhdGUoKTsgfQotICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UmIGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0gICAg
dm9pZCBzZXRGcmFtZVJhdGUoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJhbWVSYXRl
KSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSYgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gKm1fZnJhbWVSYXRlOyB9CisgICAg
dm9pZCBzZXRGcmFtZVJhdGUoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJhbWVSYXRl
KSB7IG1fZnJhbWVSYXRlID0gbWFrZU9wdGlvbmFsKGZyYW1lUmF0ZSk7IH0KIAogICAgIGJvb2wg
c3VwcG9ydHNGYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50
cy5zdXBwb3J0c0ZhY2luZ01vZGUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZhY2luZ01vZGU7IH0KICAgICB2b2lkIGFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkgeyBtX2ZhY2luZ01vZGUuYXBw
ZW5kKG1vZGUpOyB9CiAKICAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsgfQotICAg
IGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1
cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oY29uc3QgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJh
dGlvOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8oKSBj
b25zdCB7IHJldHVybiAqbV9hc3BlY3RSYXRpbzsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8o
Y29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRp
byA9IG1ha2VPcHRpb25hbChhc3BlY3RSYXRpbyk7IH0KIAogICAgIGJvb2wgc3VwcG9ydHNWb2x1
bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzVm9sdW1l
KCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUoKSBjb25zdCB7
IHJldHVybiBtX3ZvbHVtZTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQorICAgIGNvbnN0IENh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuICptX3ZvbHVtZTsg
fQorICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZvbHVt
ZSkgeyBtX3ZvbHVtZSA9IG1ha2VPcHRpb25hbCh2b2x1bWUpOyB9CiAKICAgICBib29sIHN1cHBv
cnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3Vw
cG9ydHNTYW1wbGVSYXRlKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBz
YW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgdm9pZCBzZXRT
YW1wbGVSYXRlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVJhdGUpIHsgbV9z
YW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UmIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiAqbV9zYW1wbGVSYXRlOyB9CisgICAgdm9p
ZCBzZXRTYW1wbGVSYXRlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVJhdGUp
IHsgbV9zYW1wbGVSYXRlID0gbWFrZU9wdGlvbmFsKHNhbXBsZVJhdGUpOyB9CiAKICAgICBib29s
IHN1cHBvcnRzU2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc3VwcG9ydHNTYW1wbGVTaXplKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJh
bmdlJiBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVTaXplOyB9Ci0gICAgdm9p
ZCBzZXRTYW1wbGVTaXplKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVNpemUp
IHsgbV9zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UmIHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiAqbV9zYW1wbGVTaXplOyB9Cisg
ICAgdm9pZCBzZXRTYW1wbGVTaXplKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBs
ZVNpemUpIHsgbV9zYW1wbGVTaXplID0gbWFrZU9wdGlvbmFsKHNhbXBsZVNpemUpOyB9CiAKICAg
ICBlbnVtIGNsYXNzIEVjaG9DYW5jZWxsYXRpb24gOiBib29sIHsKICAgICAgICAgUmVhZE9ubHkg
PSAwLApAQCAtMTk4LDE0ICsxNTMsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKTsKIAogcHJpdmF0ZToKLSAgICBDYXBhYmls
aXR5VmFsdWVPclJhbmdlIG1fd2lkdGg7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX2hl
aWdodDsKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fYXNwZWN0UmF0aW87Ci0gICAgQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSBtX2ZyYW1lUmF0ZTsKKyAgICBPcHRpb25hbDxDYXBhYmlsaXR5
VmFsdWVPclJhbmdlPiBtX3dpZHRoOworICAgIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2U+IG1faGVpZ2h0OworICAgIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U+IG1fYXNw
ZWN0UmF0aW87CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gbV9mcmFtZVJh
dGU7CiAgICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlPiBtX2ZhY2luZ01vZGU7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX3ZvbHVtZTsK
LSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlUmF0ZTsKLSAgICBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlIG1fc2FtcGxlU2l6ZTsKKyAgICBPcHRpb25hbDxDYXBhYmlsaXR5VmFsdWVP
clJhbmdlPiBtX3ZvbHVtZTsKKyAgICBPcHRpb25hbDxDYXBhYmlsaXR5VmFsdWVPclJhbmdlPiBt
X3NhbXBsZVJhdGU7CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gbV9zYW1w
bGVTaXplOwogICAgIEVjaG9DYW5jZWxsYXRpb24gbV9lY2hvQ2FuY2VsbGF0aW9uIHsgRWNob0Nh
bmNlbGxhdGlvbjo6UmVhZE9ubHkgfTsKICAgICBBdG9tU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAg
QXRvbVN0cmluZyBtX2dyb3VwSWQ7CkBAIC0yMjQsMTAgKzE3OSwxMCBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgICAgICA8PCBtX3ZvbHVtZQogICAgICAgICA8PCBtX3NhbXBsZVJhdGUKICAgICAgICAgPDwg
bV9zYW1wbGVTaXplCisgICAgICAgIDw8IG1fZWNob0NhbmNlbGxhdGlvbgogICAgICAgICA8PCBt
X2RldmljZUlkCiAgICAgICAgIDw8IG1fZ3JvdXBJZAotICAgICAgICA8PCBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzCi0gICAgICAgIDw8IG1fZWNob0NhbmNlbGxhdGlvbjsKKyAgICAgICAgPDwgbV9z
dXBwb3J0ZWRDb25zdHJhaW50czsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTI0
MSwyNyArMTk2LDEyIEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJlYWx0aW1lTWVkaWFTb3VyCiAgICAgICAgICYmIGRlY29k
ZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX3ZvbHVtZSkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNv
ZGUoY2FwYWJpbGl0aWVzLm1fc2FtcGxlUmF0ZSkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
Y2FwYWJpbGl0aWVzLm1fc2FtcGxlU2l6ZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUoY2Fw
YWJpbGl0aWVzLm1fZWNob0NhbmNlbGxhdGlvbikKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
Y2FwYWJpbGl0aWVzLm1fZGV2aWNlSWQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFi
aWxpdGllcy5tX2dyb3VwSWQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGll
cy5tX3N1cHBvcnRlZENvbnN0cmFpbnRzKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShjYXBh
YmlsaXRpZXMubV9lY2hvQ2FuY2VsbGF0aW9uKTsKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
Y2FwYWJpbGl0aWVzLm1fc3VwcG9ydGVkQ29uc3RyYWludHMpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU+IHsKLSAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJh
bmdlOjpUeXBlLAotICAgICAgICBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpUeXBl
OjpVbmRlZmluZWQsCi0gICAgICAgIFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5
cGU6OkRvdWJsZSwKLSAgICAgICAgV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlw
ZTo6VUxvbmcsCi0gICAgICAgIFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU6
OkRvdWJsZVJhbmdlLAotICAgICAgICBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpU
eXBlOjpVTG9uZ1JhbmdlCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
LmNwcAppbmRleCBiMjY4YjJiNTUyN2RmZTI1MmU2MWVmNGUyZThmMzA2YTk3M2I3MTAzLi5mNGY0
N2JmZjBkYjQ1ODg0ZDQyZGMzZTc5ZDUyZTI1ZmZjMTBiMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTgyLDEwICsxODIsMTAgQEAgdm9pZCBSZWFsdGltZVZp
ZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXQKICAgICAgICAgbWF4aW11bUFzcGVjdFJhdGlvID0gbWF4aW11bVdpZHRoOwogICAg
IH0KIAotICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aCh7IG1pbmltdW1XaWR0aCwgbWF4aW11bVdp
ZHRoIH0pOwotICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoeyBtaW5pbXVtSGVpZ2h0LCBtYXhp
bXVtSGVpZ2h0IH0pOwotICAgIGNhcGFiaWxpdGllcy5zZXRBc3BlY3RSYXRpbyh7IG1pbmltdW1B
c3BlY3RSYXRpbywgbWF4aW11bUFzcGVjdFJhdGlvIH0pOwotICAgIGNhcGFiaWxpdGllcy5zZXRG
cmFtZVJhdGUoeyBtaW5pbXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJhbWVSYXRlIH0pOworICAgIGNh
cGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlIHsg
bWluaW11bVdpZHRoLCBtYXhpbXVtV2lkdGggfSk7CisgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdo
dChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlIHsgbWluaW11bUhlaWdodCwgbWF4
aW11bUhlaWdodCB9KTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0aW8oQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgeyBtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1B
c3BlY3RSYXRpbyB9KTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlIHsgbWluaW11bUZyYW1lUmF0ZSwgbWF4aW11bUZyYW1l
UmF0ZSB9KTsKIH0KIAogYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNT
aXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0
LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCA0YmNkNTM5MGU1YTEyYzVhNjhhZTRjMDMyMDYxMDE1ZDhhYWI3NWQ4Li4z
NjhmMGYyYWYyM2UwYTlmNzVhMTYxMmU4YTU0MDliOWVjYWE2M2EyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHN0YXRpYyBzaXplX3QgcHJlZmVycmVkSU9CdWZmZXJTaXplKCk7CiAKLSAgICBDYXBh
YmlsaXR5VmFsdWVPclJhbmdlIHNhbXBsZVJhdGVDYXBhY2l0aWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg4MDAwLCA5NjAwMCk7IH0KKyAgICBDYXBhYmls
aXR5VmFsdWVPclJhbmdlIHNhbXBsZVJhdGVDYXBhY2l0aWVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSB7IDgwMDAsIDk2MDAwIH07IH0K
ICAgICBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG1pY3JvcGhvbmVGb3JtYXQoKSBj
b25zdCB7IHJldHVybiBtX21pY3JvcGhvbmVQcm9jRm9ybWF0OyB9CiAKICAgICBib29sIGhhc0F1
ZGlvVW5pdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW9Vbml0OyB9CkBAIC03NTgsNyArNzU4
LDcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJhaW50cygp
KTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hlZElkKCkpOwogICAgICAg
ICBjYXBhYmlsaXRpZXMuc2V0RWNob0NhbmNlbGxhdGlvbihSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjpFY2hvQ2FuY2VsbGF0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICBjYXBhYmls
aXRpZXMuc2V0Vm9sdW1lKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMC4wLCAxLjApKTsKKyAgICAg
ICAgY2FwYWJpbGl0aWVzLnNldFZvbHVtZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVS
YW5nZSB7IDAuMCwgMS4wIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0U2FtcGxlUmF0ZSh1
bml0KCkuc2FtcGxlUmF0ZUNhcGFjaXRpZXMoKSk7CiAgICAgICAgIG1fY2FwYWJpbGl0aWVzID0g
V1RGTW92ZShjYXBhYmlsaXRpZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcAppbmRleCAzZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcw
NjYzLi4zMzgwZjhiZDNjNGQ0OWZlZTJkODAwZDU4ODg2NmQ4ZjRlZGY2ZDA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDkgKzExNSw5IEBAIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OmNhcGFiaWxpdGllcygpCiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHRoZXNlIGJlPwotICAgICAgICBjYXBhYmls
aXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAzODQwKSk7Ci0gICAgICAg
IGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAyMTYwKSk7
Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSguMDEsIDMwLjApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2U6OlVMb25nUmFuZ2UgeyAxLCAzODQwIH0pOworICAgICAgICBjYXBhYmlsaXRp
ZXMuc2V0SGVpZ2h0KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25nUmFuZ2UgeyAxLCAyMTYw
IH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U6OkRvdWJsZVJhbmdlIHsgLjAxLCAzMC4wIH0pOwogCiAgICAgICAgIG1fY2FwYWJpbGl0
aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5p
dC5oCmluZGV4IDQwYTNiMmYwMjY4YzhjNzFlMTQ0YzRkYTFjZDZiODNhMjhhMzU5MmMuLjY4Y2Rj
MTEyMjRmMGI0N2IxNTMyZGM4YTQ4ODdlNDIwNjA2NGNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJl
ZFVuaXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsYXlTYW1w
bGVzKFNlY29uZHMpIGZpbmFsOwogCi0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBzYW1wbGVS
YXRlQ2FwYWNpdGllcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UoNDQxMDAsIDQ4MDAwKTsgfQorICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Ugc2FtcGxlUmF0
ZUNhcGFjaXRpZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
OjpVTG9uZ1JhbmdlIHsgNDQxMDAsIDQ4MDAwIH07IH0KIAogICAgIHZvaWQgdGljaygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwCmluZGV4IDc1ZGI4ODA1ZjQ3OWYyNGIzMzExMzQ3NWFmZDlmZGRmZDRhNjRi
ZDEuLjk4NzVmNGE5Nzc0YWFhZGZlMmE4YTAzODQ4YmM4ZTQ1ODRiOTAyMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTE5LDkgKzExOSw5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKQogICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygp
LnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogCiAgICAgICAgIGNhcGFiaWxpdGllcy5zZXREZXZp
Y2VJZChoYXNoZWRJZCgpKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldFZvbHVtZShDYXBhYmls
aXR5VmFsdWVPclJhbmdlKDAuMCwgMS4wKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRWb2x1
bWUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgeyAwLjAsIDEuMCB9KTsKICAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldEVjaG9DYW5jZWxsYXRpb24oUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6RWNob0NhbmNlbGxhdGlvbjo6UmVhZFdyaXRlKTsKLSAgICAgICAgY2Fw
YWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg0NDEwMCwgNDgw
MDApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZTo6VUxvbmdSYW5nZSB7IDQ0MTAwLCA0ODAwMCB9KTsKIAogICAgICAgICBtX2NhcGFi
aWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IGU0OGM4YzYyM2FhZjk3NmQxZWJmYzM4MjJkMWY4ZjY5NzBiMWJlZWIuLjg2MGE4MjhkMWJk
NDY4YzYyOGUxNDhiZjVhZGU0YjMzOTNmZWJlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMy
LDkgKzEzMiw5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMoKQogICAgICAgICAgICAgdXBkYXRlQ2Fw
YWJpbGl0aWVzKGNhcGFiaWxpdGllcyk7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RGV2
aWNlSWQoaGFzaGVkSWQoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYXBhYmls
aXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg3MiwgMjg4MCkpOwotICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1LCAx
ODAwKSk7Ci0gICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2UoLjAxLCA2MC4wKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lk
dGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSB7IDcyLCAyODgwIH0pOworICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpV
TG9uZ1JhbmdlIHsgNDUsIDE4MDAgfSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJh
bWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlIHsgLjAxLCA2MC4wIH0p
OwogICAgICAgICB9CiAKICAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKGNhcGFiaWxp
dGllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBiYjJiM2M0NjAxYzBlMzg3MmFjYzFhZTMzYzk1ODdjNDgyM2JmZDNlLi4wYzgwZTg3MjZkNjNl
Nzc1NjNmZjZmM2QxNTk2ZTAzM2NjYWViMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTE1NywxNCArMTU3LDIxIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIFQgdmFsdWU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pIHsKKyAgICAgICAgICAgIG9wdGlv
bmFsID0gVDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuIGRlY29kZXIuaXNW
YWxpZCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgb3B0aW9u
YWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIG9wdGlvbmFsID0gV1RGTW92ZSh2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgc3RhdGlj
IE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRW5nYWdlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425557</attachid>
            <date>2021-04-08 16:20:40 -0700</date>
            <delta_ts>2021-04-08 16:31:45 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-224090-20210408162040.patch</filename>
            <type>text/plain</type>
            <size>52758</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY5NzY1OWYyZjVmMTM5
NDM0ZjI2MWVmYjU1NGQ4NTBmMzMzOWQzMS4uNWU4M2E2YWJmMDE5ODE4Yzk3NGNkMGRlYWI1ZWNm
MTFlYzE2Yjg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0wNC0wOCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtDb3JlSVBDXSBFbmNv
ZGluZy9kZWNvZGluZyBvZiBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHRyYW5zbWl0
cyBwYWRkaW5nIGJ5dGVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjQwOTA+Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTk4MTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpUeXBlIGVudW0gYW5kCisgICAgICAgIHRoZSBWYWx1ZVVuaW9uIHVu
aW9uIHdpdGggYSBXVEY6OlZhcmlhbnQgY29udGFpbmluZyBvbmUgb2YgdGhlCisgICAgICAgIGZv
dXIgdHlwZXMgb2YgdmFsdWVzLCBpbmNsdWRpbmcgc3RkOjpwYWlyPD4gdG8gaG9sZCByYW5nZXMu
IFRoZQorICAgICAgICBEb3VibGVSYW5nZSBhbmQgTG9uZ1JhbmdlIElETCB0eXBlcyBhcmUgbm90
IHVzZWQgZm9yIGludGVybmFsCisgICAgICAgIHJlcHJlc2VudGF0aW9ucyB0byBrZWVwIHRoZXNl
IGNsYXNzZXMgc2ltcGxlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1hZGRFdmVudExpc3RlbmVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbWVkaWFz
dHJlYW0vY29uc3RyYWludC1pbnRyaW5zaWMtc2l6ZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL21lZGlhL21lZGlhLXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1pZnJhbWUtYWxsb3ct
YXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc3Ry
ZWFtL2dldC1kaXNwbGF5LW1lZGlhLWlmcmFtZS1hbGxvdy1hdHRyaWJ1dGUuaHRtbAorICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVj
b3JkL01lZGlhUmVjb3JkZXItYml0cmF0ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICB3ZWJy
dGMvYWRkSUNFQ2FuZGlkYXRlLWNsb3NlZC5odG1sCisgICAgICAgICAgICAgICB3ZWJydGMvaWNl
LWNhbmRpZGF0ZS1zZHBNTGluZUluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0Yy9saWJ3
ZWJydGMvZGVzY3JpcHRpb25HZXR0ZXJzLmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0Yy9wZWVy
Y29ubmVjdGlvbi1wYWdlLWNhY2hlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXR5RG91
YmxlUmFuZ2UpOiBEZWxldGUuCisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXR5SW50UmFuZ2Up
OiBEZWxldGUuCisgICAgICAgIC0gTW92ZSB0aGVzZSBpbnRvIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2U6OmFzRG91YmxlUmFuZ2UoKSBhbmQKKyAgICAgICAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
Ojphc0xvbmdSYW5nZSgpIHNvIHRoYXQgdGhlIG1fdmFsdWUKKyAgICAgICAgICB2YXJpYW50IGRv
ZXMgbm90IGhhdmUgdG8gYmUgZXhwb3NlZCB2aWEgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAgLSBTd2l0
Y2ggdG8gdXNlIDo6YXNEb3VibGVSYW5nZSgpIGFuZCA6OmFzTG9uZ1JhbmdlKCkuCisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIC0gQWRkIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3Bw
IHRvIHByb2plY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1
cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpmaXRuZXNzRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAtIFN3aXRjaCB0byB1c2UgOjph
c0RvdWJsZVJhbmdlKCkgYW5kIDo6YXNMb25nUmFuZ2UoKS4KKyAgICAgICAgLSBOT1RFOiBUaGlz
IGNoYW5nZXMgYmVoYXZpb3Igc2xpZ2h0bHkgaW4gdGhhdCByZXF1ZXN0aW5nIGEKKyAgICAgICAg
ICByYW5nZSBmcm9tIGEgc2luZ2xlIERvdWJsZS9VTG9uZyB2YWx1ZSB3aWxsIG5vIGxvbmdlciBy
ZXR1cm4KKyAgICAgICAgICBhbiB1bmluaXRpYWxpemVkIHZhbHVlIChwcmlvciB0byByMjc1MTQy
KSBvciB6ZXJvIGZvciB0aGUgbWF4CisgICAgICAgICAgdmFsdWUsIGJ1dCBpbnN0ZWFkIHJldHVy
biBhIHJhbmdlIHdoZXJlIG1pbiA9PSBtYXggPT0gdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmNwcDogQWRkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6YXNEb3VibGVSYW5nZSBj
b25zdCk6IEFkZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmFz
TG9uZ1JhbmdlIGNvbnN0KTogQWRkLgorICAgICAgICAtIFVzZSBDKysxNyBzdHJ1Y3R1cmVkIGJp
bmRpbmdzIHRvIGF2b2lkIHRoZSB1c2Ugb2YgLmZpcnN0IGFuZAorICAgICAgICAgIC5zZWNvbmQg
YWNjZXNzb3JzIGZyb20gc3RkOjpwYWlyIHRvIGdldCBtaW4vbWF4IHZhbHVlcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGUpOiBEZWxl
dGUuCisgICAgICAgIC0gUmVtb3ZlIGVudW0gaW4gZmF2b3Igb2YgV1RGOjpWYXJpYW50LgorICAg
ICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6Q2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSk6CisgICAgICAgIC0gRGVsZXRlIGRlZmF1bHQgY29uc3RydWN0b3Igc2luY2UgdGhlcmUg
aXMgbm8gbmVlZCB0byBjcmVhdGUgYW4KKyAgICAgICAgICBlbXB0eSBvYmplY3QuCisgICAgICAg
IC0gVXBkYXRlIGNvbnN0cnVjdG9ycyBmb3IgV1RGOjpWYXJpYW50LgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6dHlwZSBjb25zdCk6IERlbGV0ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OnJhbmdlTWluIGNvbnN0KTogRGVsZXRl
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6cmFuZ2VNYXggY29u
c3QpOiBEZWxldGUuCisgICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjp2
YWx1ZSBjb25zdCk6IERlbGV0ZS4KKyAgICAgICAgLSBSZW1vdmUgdW51c2VkIG1ldGhvZHMuCisg
ICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6ZGVjb2RlKToKKyAgICAg
ICAgLSBQcm92aWRlIElQQyBlbmNvZGVyIGFuZCBkZWNvZGVyIHRoYXQgZG9uJ3QgcmVxdWlyZSBh
IGRlZmF1bHQKKyAgICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2U6OmFzRG91YmxlUmFuZ2UgY29uc3QpOiBBZGQuCisgICAgICAgIChX
ZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjphc0xvbmdSYW5nZSBjb25zdCk6IEFkZC4K
KyAgICAgICAgLSBNb3ZlIFdlYkNvcmU6OmNhcGFiaWxpdHlEb3VibGVSYW5nZSgpIGFuZAorICAg
ICAgICAgIFdlYkNvcmU6OmNhcGFiaWxpdHlJbnRSYW5nZSgpIGZyb20gTWVkaWFTdHJlYW1UcmFj
ay5jcHAgdG8KKyAgICAgICAgICBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllczo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEhlaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpmcmFt
ZVJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6c2V0RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OmFzcGVjdFJhdGlvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnZvbHVtZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpz
ZXRWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllczo6c2FtcGxlUmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjpzZXRTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNhbXBsZVNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U2FtcGxlU2l6
ZSk6CisgICAgICAgIC0gTWFrZSBhbGwgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBpbnN0YW5jZSB2
YXJpYWJsZXMgT3B0aW9uYWw8PgorICAgICAgICAgIHNpbmNlIHRoZXkgYXJlLCBpbiBmYWN0LCBh
bGwgb3B0aW9uYWwgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmRlY29kZSk6CisgICAgICAgIC0gVXBkYXRlIG9yZGVy
IG9mIGVuY29kZWQvZGVjb2RlZCBpbnN0YW5jZSB2YXJpYWJsZXMgdG8gbWF0Y2gKKyAgICAgICAg
ICB0aGUgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MuCisgICAgICAgIChzdHJ1
Y3QgV1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU+
KToKKyAgICAgICAgLSBSZW1vdmUgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZTo6VW5kZWZp
bmVkIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvQ2FwdHVy
ZVNvdXJjZTo6dXBkYXRlQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRWb2x1bWVDYXBhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxp
dGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJl
ZFVuaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjYXBhYmls
aXRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNhcGFiaWxp
dGllcyk6CisgICAgICAgIC0gVXBkYXRlIHRvIHVzZSBuZXcgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSBjb25zdHJ1Y3RvcnMuCisKIDIwMjEtMDQtMDMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBVQlNhbjogUmVuZGVyVmlldy5jcHA6ODMxOjk6IHJ1bnRpbWUg
ZXJyb3I6IGxvYWQgb2YgdmFsdWUgbm5uLCB3aGljaCBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3Ig
dHlwZSAnYm9vbCcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjVkNjc1MTdmZjIwYzc1Yzg3MGU2MmUwMTg5YWEyYjlk
OWU0YjU4MS4uMDBlYjRjYWEzOGE3ODcxOGNjMjcyOTIzMjZhZDQzYjk1MTUyZmZmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNC0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb3JlSVBDXSBFbmNvZGluZy9kZWNvZGluZyBvZiBXZWJD
b3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHRyYW5zbWl0cyBwYWRkaW5nIGJ5dGVzCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjQwOTA+CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83NTk4MTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPE9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgLSBBZGQgY29uc3RleHBy
IEhhc01vZGVybkRlY29kZXJUPFY+IGNoZWNrLiBUaGlzIGFsc28gcmVtb3ZlcworICAgICAgICAg
IHRoZSBuZWVkIGZvciBhIGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIHRoZSBkZWNvZGVkIG9iamVj
dC4KKwogMjAyMS0wNC0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVUF0gUG93ZXIgcmVncmVzc2lvbjogYXVkaW8gaGFyZHdhcmUgaXMgY29uZmlndXJl
ZCBmb3IgMTI4IGZyYW1lIHByZWZlcnJlZCBidWZmZXIgc2l6ZSBkdXJpbmcgVmlkZW9BdWRpbyBw
bGF5YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNmMxZjE3YTAzZjc5MjI1MWE1MmJhOGFkNDAwMmRl
OGFiYmE3YmU0Ny4uMGU2NTVkMjM2NDI1MTExY2UyMDU3MTNmZWYxOTFiMDRhMTlhMzgwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3Niw0NiArMjc2LDYgQEAgTWVkaWFTdHJlYW1UcmFjazo6
VHJhY2tTZXR0aW5ncyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncygpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIERvdWJsZVJhbmdlIGNhcGFiaWxpdHlEb3VibGVS
YW5nZShjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2YWx1ZSkKLXsKLSAgICBEb3VibGVS
YW5nZSByYW5nZTsKLSAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewotICAgIGNhc2UgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlOgotICAgICAgICByYW5nZS5taW4gPSB2YWx1ZS52YWx1
ZSgpLmFzRG91YmxlOwotICAgICAgICByYW5nZS5tYXggPSByYW5nZS5taW47Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2U6Ci0gICAg
ICAgIHJhbmdlLm1pbiA9IHZhbHVlLnJhbmdlTWluKCkuYXNEb3VibGU7Ci0gICAgICAgIHJhbmdl
Lm1heCA9IHZhbHVlLnJhbmdlTWF4KCkuYXNEb3VibGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VW5kZWZpbmVkOgotICAgIGNhc2UgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6VUxvbmc6Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpV
TG9uZ1JhbmdlOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHJhbmdlOwotfQotCi1zdGF0aWMgTG9uZ1JhbmdlIGNhcGFiaWxpdHlJbnRSYW5nZShjb25z
dCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2YWx1ZSkKLXsKLSAgICBMb25nUmFuZ2UgcmFuZ2U7
Ci0gICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKLSAgICBjYXNlIENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U6OlVMb25nOgotICAgICAgICByYW5nZS5taW4gPSB2YWx1ZS52YWx1ZSgpLmFzSW50Owot
ICAgICAgICByYW5nZS5tYXggPSByYW5nZS5taW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZToKLSAgICAgICAgcmFuZ2UubWluID0g
dmFsdWUucmFuZ2VNaW4oKS5hc0ludDsKLSAgICAgICAgcmFuZ2UubWF4ID0gdmFsdWUucmFuZ2VN
YXgoKS5hc0ludDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJh
bmdlOjpVbmRlZmluZWQ6Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGU6
Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZToKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiByYW5nZTsKLX0KLQogc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGNhcGFiaWxpdHlTdHJpbmdWZWN0b3IoY29uc3QgVmVjdG9yPFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiYgbW9kZXMpCiB7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpAQCAtMzQwLDIxICszMDAsMjEgQEAgTWVkaWFTdHJl
YW1UcmFjazo6VHJhY2tDYXBhYmlsaXRpZXMgTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0
aWVzKCkgY29uc3QKICAgICBhdXRvIGNhcGFiaWxpdGllcyA9IG1fcHJpdmF0ZS0+Y2FwYWJpbGl0
aWVzKCk7CiAgICAgVHJhY2tDYXBhYmlsaXRpZXMgcmVzdWx0OwogICAgIGlmIChjYXBhYmlsaXRp
ZXMuc3VwcG9ydHNXaWR0aCgpKQotICAgICAgICByZXN1bHQud2lkdGggPSBjYXBhYmlsaXR5SW50
UmFuZ2UoY2FwYWJpbGl0aWVzLndpZHRoKCkpOworICAgICAgICByZXN1bHQud2lkdGggPSBjYXBh
YmlsaXRpZXMud2lkdGgoKS5hc0xvbmdSYW5nZSgpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3Vw
cG9ydHNIZWlnaHQoKSkKLSAgICAgICAgcmVzdWx0LmhlaWdodCA9IGNhcGFiaWxpdHlJbnRSYW5n
ZShjYXBhYmlsaXRpZXMuaGVpZ2h0KCkpOworICAgICAgICByZXN1bHQuaGVpZ2h0ID0gY2FwYWJp
bGl0aWVzLmhlaWdodCgpLmFzTG9uZ1JhbmdlKCk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBw
b3J0c0FzcGVjdFJhdGlvKCkpCi0gICAgICAgIHJlc3VsdC5hc3BlY3RSYXRpbyA9IGNhcGFiaWxp
dHlEb3VibGVSYW5nZShjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8oKSk7CisgICAgICAgIHJlc3Vs
dC5hc3BlY3RSYXRpbyA9IGNhcGFiaWxpdGllcy5hc3BlY3RSYXRpbygpLmFzRG91YmxlUmFuZ2Uo
KTsKICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpCi0gICAgICAgIHJl
c3VsdC5mcmFtZVJhdGUgPSBjYXBhYmlsaXR5RG91YmxlUmFuZ2UoY2FwYWJpbGl0aWVzLmZyYW1l
UmF0ZSgpKTsKKyAgICAgICAgcmVzdWx0LmZyYW1lUmF0ZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJh
dGUoKS5hc0RvdWJsZVJhbmdlKCk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0ZhY2lu
Z01vZGUoKSkKICAgICAgICAgcmVzdWx0LmZhY2luZ01vZGUgPSBjYXBhYmlsaXR5U3RyaW5nVmVj
dG9yKGNhcGFiaWxpdGllcy5mYWNpbmdNb2RlKCkpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3Vw
cG9ydHNWb2x1bWUoKSkKLSAgICAgICAgcmVzdWx0LnZvbHVtZSA9IGNhcGFiaWxpdHlEb3VibGVS
YW5nZShjYXBhYmlsaXRpZXMudm9sdW1lKCkpOworICAgICAgICByZXN1bHQudm9sdW1lID0gY2Fw
YWJpbGl0aWVzLnZvbHVtZSgpLmFzRG91YmxlUmFuZ2UoKTsKICAgICBpZiAoY2FwYWJpbGl0aWVz
LnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQotICAgICAgICByZXN1bHQuc2FtcGxlUmF0ZSA9IGNhcGFi
aWxpdHlJbnRSYW5nZShjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpKTsKKyAgICAgICAgcmVzdWx0
LnNhbXBsZVJhdGUgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpLmFzTG9uZ1JhbmdlKCk7CiAg
ICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c1NhbXBsZVNpemUoKSkKLSAgICAgICAgcmVzdWx0
LnNhbXBsZVNpemUgPSBjYXBhYmlsaXR5SW50UmFuZ2UoY2FwYWJpbGl0aWVzLnNhbXBsZVNpemUo
KSk7CisgICAgICAgIHJlc3VsdC5zYW1wbGVTaXplID0gY2FwYWJpbGl0aWVzLnNhbXBsZVNpemUo
KS5hc0xvbmdSYW5nZSgpOwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNFY2hvQ2FuY2Vs
bGF0aW9uKCkpCiAgICAgICAgIHJlc3VsdC5lY2hvQ2FuY2VsbGF0aW9uID0gY2FwYWJpbGl0eUJv
b2xlYW5WZWN0b3IoY2FwYWJpbGl0aWVzLmVjaG9DYW5jZWxsYXRpb24oKSk7CiAgICAgaWYgKGNh
cGFiaWxpdGllcy5zdXBwb3J0c0RldmljZUlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDllNGZhNjBj
Y2RkYWZkYzE1ZGQ2NTEzOTFmMWIyMTE2YjM3MzRhNDUuLjE3ZGI0ZjczNGVlYTIwOTk1MzQ3YzFh
OTUxNmJkY2Q0ZDI4MmFjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTAwLDYgKzIxMDAsNyBAQCBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcAog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKK3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUzMDJkYjBkMGM2ODIyMzFmNTYyZmU5
MDhjOWViMTUxMWIzZjk2MS4uOWQxYzgxNmZiODNhZWQ0OGYwMzliNjZkNWE5M2ZkNTVmZjE3Mjc1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODIxOSw2ICs4MjE5LDcgQEAKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8q
IFNlbGVjdGlvblJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZWxlY3Rpb25SYW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhC
RjkyNTM2OUE4ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFs
RXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1Nl
bGVjdGlvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NEMzRkUwQjI2MUU5
RDE2MDBENDBCQkEgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxODEwRjNEMUUwRDAwNTg2NjcwIC8qIFNjcm9s
bGJhclRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2Nyb2xsYmFyVGhlbWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Qzk5
MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3NTI5LDYgKzE3NTMwLDcgQEAKIAkJCQk1Q0REODMzQTFFNDMyNEJC
MDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmggKi8sCiAJCQkJNEE0RjY1
NkIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAogCQkJCTRB
NEY2NTZDMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCisJCQkJ
NDRDM0ZFMEIyNjFFOUQxNjAwRDQwQkJBIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMuY3BwICovLAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJNEEwRkZBOUYxQUFGNUVBMjAwNjI4MDNCIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwICovLAogCQkJCTRBMEZGQUEwMUFBRjVFQTIw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDI3OGQxOTY3OGRiM2VhMzQ0ZDU3NzMxNWZkZjAwMzBjMTBlOTBjYTAuLjMx
ZmYwMmVhODUwZDJmNTczZjlkNDQ5YmNlNGNmOTQ1YjY1NWM0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqIENvcHlyaWdo
dCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMTUs
MTYgKzMxNSwxNiBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZy
YW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogICAgIGlmICh3aWR0aENvbnN0
cmFpbnQgJiYgY2FwYWJpbGl0aWVzLnN1cHBvcnRzV2lkdGgoKSkgewogICAgICAgICBkb3VibGUg
Y29uc3RyYWludERpc3RhbmNlID0gZml0bmVzc0Rpc3RhbmNlKCp3aWR0aENvbnN0cmFpbnQpOwog
ICAgICAgICBpZiAoc3RkOjppc2luZihjb25zdHJhaW50RGlzdGFuY2UpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgICAgICBXVEZMb2dB
bHdheXMoIlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSBmYWls
ZWQgd2lkdGggY29uc3RyYWludCwgY2FwYWJpbGl0aWVzIGFyZSBbJWQsICVkXSIsIHJhbmdlLnJh
bmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0
byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZSBmYWlsZWQgd2lkdGggY29uc3RyYWludCwgY2FwYWJpbGl0aWVzIGFyZSBbJWQsICVkXSIs
ICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwogICAgICAgICAgICAgYmFkQ29uc3RyYWludCA9IHdp
ZHRoQ29uc3RyYWludC0+bmFtZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKICAgICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERp
c3RhbmNlKTsKICAgICAgICAgaWYgKHdpZHRoQ29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgewot
ICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICAg
ICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUo
KS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
KTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMud2lkdGgoKS5hc0xvbmdS
YW5nZSgpOworICAgICAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2Fw
YWJpbGl0eVJhbmdlKHNpemUoKS53aWR0aCgpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMzMyLDE2ICszMzIsMTYgQEAgYm9vbCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4g
d2lkdGgKICAgICBpZiAoaGVpZ2h0Q29uc3RyYWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNI
ZWlnaHQoKSkgewogICAgICAgICBkb3VibGUgY29uc3RyYWludERpc3RhbmNlID0gZml0bmVzc0Rp
c3RhbmNlKCpoZWlnaHRDb25zdHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoY29uc3Ry
YWludERpc3RhbmNlKSkgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5o
ZWlnaHQoKTsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlIGZhaWxlZCBoZWlnaHQgY29uc3RyYWludCwgY2FwYWJp
bGl0aWVzIGFyZSBbJWQsICVkXSIsIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdl
TWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5oZWln
aHQoKS5hc0xvbmdSYW5nZSgpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWFsdGltZU1l
ZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUgZmFpbGVkIGhlaWdodCBjb25zdHJh
aW50LCBjYXBhYmlsaXRpZXMgYXJlIFslZCwgJWRdIiwgKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7
CiAgICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gaGVpZ2h0Q29uc3RyYWludC0+bmFtZSgpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgZGlzdGFuY2Ug
PSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKICAgICAgICAgaWYgKGhl
aWdodENvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHRDb25z
dHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXplKCkuaGVpZ2h0KCksIHJhbmdlLnJh
bmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0
byByYW5nZSA9IGNhcGFiaWxpdGllcy5oZWlnaHQoKS5hc0xvbmdSYW5nZSgpOworICAgICAgICAg
ICAgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6
ZSgpLmhlaWdodCgpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMzQ5LDE2ICszNDksMTYgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0
c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgKICAgICBpZiAo
ZnJhbWVSYXRlQ29uc3RyYWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkg
ewogICAgICAgICBkb3VibGUgY29uc3RyYWludERpc3RhbmNlID0gZml0bmVzc0Rpc3RhbmNlKCpm
cmFtZVJhdGVDb25zdHJhaW50KTsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoY29uc3RyYWludERp
c3RhbmNlKSkgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJh
dGUoKTsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3Vw
cG9ydHNTaXplQW5kRnJhbWVSYXRlIGZhaWxlZCBmcmFtZSByYXRlIGNvbnN0cmFpbnQsIGNhcGFi
aWxpdGllcyBhcmUgWyVkLCAlZF0iLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5n
ZU1heCgpLmFzSW50KTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJh
bWVSYXRlKCkuYXNEb3VibGVSYW5nZSgpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWFs
dGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUgZmFpbGVkIGZyYW1lIHJh
dGUgY29uc3RyYWludCwgY2FwYWJpbGl0aWVzIGFyZSBbJWEsICVhXSIsICpyYW5nZS5taW4sICpy
YW5nZS5tYXgpOwogICAgICAgICAgICAgYmFkQ29uc3RyYWludCA9IGZyYW1lUmF0ZUNvbnN0cmFp
bnQtPm5hbWUoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAg
ICAgIGRpc3RhbmNlID0gc3RkOjptaW4oZGlzdGFuY2UsIGNvbnN0cmFpbnREaXN0YW5jZSk7CiAg
ICAgICAgIGlmIChmcmFtZVJhdGVDb25zdHJhaW50LT5pc01hbmRhdG9yeSgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpOwotICAgICAgICAgICAg
ZnJhbWVSYXRlID0gZnJhbWVSYXRlQ29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uo
dGhpcy0+ZnJhbWVSYXRlKCksIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdl
TWF4KCkuYXNEb3VibGUpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5m
cmFtZVJhdGUoKS5hc0RvdWJsZVJhbmdlKCk7CisgICAgICAgICAgICBmcmFtZVJhdGUgPSBmcmFt
ZVJhdGVDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5mcmFtZVJhdGUo
KSwgKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM5MCw4
ICszOTAsOCBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNv
bnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRp
ZXMuc3VwcG9ydHNXaWR0aCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYXV0
byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
SW50Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWlu
KCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICBhdXRvIHJhbmdlID0g
Y2FwYWJpbGl0aWVzLndpZHRoKCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqcmFuZ2UubWlu
LCAqcmFuZ2UubWF4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00MDAsOCArNDAwLDgg
QEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRp
YUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBv
cnRzSGVpZ2h0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBhdXRvIHJhbmdl
ID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29u
c3RyYWludD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJ
bnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJp
bGl0aWVzLmhlaWdodCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJ
bnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJh
bmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDEwLDggKzQxMCw4IEBAIGRv
dWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25z
dHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5zdXBwb3J0c0Zy
YW1lUmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYXV0byByYW5nZSA9
IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKTsKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdWJs
ZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZShyYW5nZS5yYW5nZU1pbigp
LmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlKTsKKyAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKS5hc0RvdWJsZVJhbmdlKCk7CisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFu
Y2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
NDIwLDggKzQyMCw4IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFu
Y2UoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNhcGFi
aWxpdGllcy5zdXBwb3J0c0FzcGVjdFJhdGlvKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAot
ICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvKCk7Ci0gICAgICAg
IHJldHVybiBkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlz
dGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJs
ZSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8oKS5hc0Rv
dWJsZVJhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihj
b25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDMwLDggKzQzMCw4IEBAIGRvdWJsZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJh
aW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5zdXBwb3J0c1ZvbHVtZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy52b2x1
bWUoKTsKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFp
bnQpLmZpdG5lc3NEaXN0YW5jZShyYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5n
ZU1heCgpLmFzRG91YmxlKTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy52b2x1
bWUoKS5hc0RvdWJsZVJhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb3VibGVDb25z
dHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1h
eCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDQzLDggKzQ0Myw4IEBAIGRvdWJsZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50
JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoYXV0byBkaXNjcmV0ZVJhdGVzID0gZGlzY3JldGVT
YW1wbGVSYXRlcygpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0cmFpbnQ+
KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlzY3JldGVSYXRlcyk7CiAKLSAgICAgICAg
YXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7Ci0gICAgICAgIHJldHVybiBk
b3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UocmFuZ2Uu
cmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgIGF1dG8g
cmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFu
Y2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
NDU2LDggKzQ1Niw4IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFu
Y2UoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoYXV0byBk
aXNjcmV0ZVNpemVzID0gZGlzY3JldGVTYW1wbGVTaXplcygpKQogICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlz
Y3JldGVTaXplcyk7CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVT
aXplKCk7Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50
KS5maXRuZXNzRGlzdGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgp
LmFzTG9uZ1JhbmdlKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihj
b25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTYxLDggKzU2MSw4IEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWlu
dCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNBc3BlY3RSYXRpbygpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNw
ZWN0UmF0aW8oKTsKLSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3Vi
bGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8oKSwgeyB9LCByYW5nZS5yYW5n
ZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCAqdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNh
cGFiaWxpdGllcy5hc3BlY3RSYXRpbygpLmFzRG91YmxlUmFuZ2UoKTsKKyAgICAgICAgYXBwbHlO
dW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwg
YXNwZWN0UmF0aW8oKSwgeyB9LCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4LCAqdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkBAIC01NzEsOCArNTcxLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0
cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNh
cGFiaWxpdGllcy5zdXBwb3J0c1ZvbHVtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMudm9sdW1lKCk7Ci0gICAgICAgIGFwcGx5TnVt
ZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCksIHZv
bHVtZSgpLCB7IH0sIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCku
YXNEb3VibGUsICp0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKTsKKyAgICAg
ICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy52b2x1bWUoKS5hc0RvdWJsZVJhbmdlKCk7Cisg
ICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4o
Y29uc3RyYWludCksIHZvbHVtZSgpLCB7IH0sICpyYW5nZS5taW4sICpyYW5nZS5tYXgsICp0aGlz
LCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC01ODEsOCArNTgxLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNv
bnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAo
IWNhcGFiaWxpdGllcy5zdXBwb3J0c1NhbXBsZVJhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnNhbXBsZVJhdGUoKTsKLSAgICAg
ICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJh
aW50KSwgc2FtcGxlUmF0ZSgpLCBkaXNjcmV0ZVNhbXBsZVJhdGVzKCksIHJhbmdlLnJhbmdlTWlu
KCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQsICp0aGlzLCAmUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0U2FtcGxlUmF0ZSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMu
c2FtcGxlUmF0ZSgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNhbXBsZVJhdGUoKSwgZGlz
Y3JldGVTYW1wbGVSYXRlcygpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4LCAqdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTU5MSw4ICs1OTEsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2Fw
YWJpbGl0aWVzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgpOwotICAgICAgICBh
cHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQp
LCBzYW1wbGVTaXplKCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VN
YXgoKS5hc0ludCwgKnRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKTsK
KyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCkuYXNMb25nUmFu
Z2UoKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxJbnRDb25zdHJh
aW50Pihjb25zdHJhaW50KSwgc2FtcGxlU2l6ZSgpLCB7IH0sICpyYW5nZS5taW4sICpyYW5nZS5t
YXgsICp0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtODk1LDggKzg5NSw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJh
aW50CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFp
bnRzLmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpKSB7CiAgICAgICAgIEFTU0VSVChj
b25zdHJhaW50LT5pc0ludCgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c1dp
ZHRoKCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMud2lkdGgoKTsK
LSAgICAgICAgICAgIHdpZHRoID0gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oKmNvbnN0cmFpbnQp
LnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigp
LmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50KTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBjYXBhYmlsaXRpZXMud2lkdGgoKS5hc0xvbmdSYW5nZSgpOworICAgICAgICAgICAgd2lkdGgg
PSBkb3duY2FzdDxJbnRDb25zdHJhaW50PigqY29uc3RyYWludCkudmFsdWVGb3JDYXBhYmlsaXR5
UmFuZ2Uoc2l6ZSgpLndpZHRoKCksICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC05MDQsOCArOTA0LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjph
cHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFpbnQKICAg
ICBpZiAoY29uc3QgTWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3RyYWludHMuZmlu
ZChNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpKSB7CiAgICAgICAgIEFTU0VSVChjb25zdHJh
aW50LT5pc0ludCgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0hlaWdodCgp
KSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpOwotICAg
ICAgICAgICAgaGVpZ2h0ID0gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oKmNvbnN0cmFpbnQpLnZh
bHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VNaW4oKS5h
c0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0g
Y2FwYWJpbGl0aWVzLmhlaWdodCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAgICBoZWlnaHQg
PSBkb3duY2FzdDxJbnRDb25zdHJhaW50PigqY29uc3RyYWludCkudmFsdWVGb3JDYXBhYmlsaXR5
UmFuZ2Uoc2l6ZSgpLmhlaWdodCgpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtOTEzLDggKzkxMyw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAg
ICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZp
bmQoTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKSkgewogICAgICAgICBBU1NFUlQoY29u
c3RyYWludC0+aXNEb3VibGUoKSk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNG
cmFtZVJhdGUoKSkgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFt
ZVJhdGUoKTsKLSAgICAgICAgICAgIGZyYW1lUmF0ZSA9IGRvd25jYXN0PERvdWJsZUNvbnN0cmFp
bnQ+KCpjb25zdHJhaW50KS52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5mcmFtZVJhdGUo
KSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSk7
CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpLmFzRG91
YmxlUmFuZ2UoKTsKKyAgICAgICAgICAgIGZyYW1lUmF0ZSA9IGRvd25jYXN0PERvdWJsZUNvbnN0
cmFpbnQ+KCpjb25zdHJhaW50KS52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0aGlzLT5mcmFtZVJh
dGUoKSwgKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA1ZDZi
NTAwZjY0MDU4NzZkZDNmM2NkN2ZiNTNhYmIzMzMyMWY5ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJDb3JlOjpEb3VibGVSYW5nZSBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlOjphc0RvdWJsZVJhbmdlKCkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpEb3Vi
bGVSYW5nZSByYW5nZTsKKyAgICBzd2l0Y2hPbihtX3ZhbHVlLAorICAgICAgICBbJl0gKENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZSB2YWx1ZSkgeworICAgICAgICAgICAgcmFuZ2UubWlu
ID0gdmFsdWU7CisgICAgICAgICAgICByYW5nZS5tYXggPSB2YWx1ZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZSYgdmFs
dWUpIHsKKyAgICAgICAgICAgIGF1dG8gW21pbiwgbWF4XSA9IHZhbHVlOworICAgICAgICAgICAg
cmFuZ2UubWluID0gbWluOworICAgICAgICAgICAgcmFuZ2UubWF4ID0gbWF4OworICAgICAgICB9
LAorICAgICAgICBbJl0gKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25nKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25z
dCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlJikgeworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICApOworICAgIHJldHVybiByYW5nZTsK
K30KKworTG9uZ1JhbmdlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmFzTG9uZ1JhbmdlKCkgY29u
c3QKK3sKKyAgICBMb25nUmFuZ2UgcmFuZ2U7CisgICAgc3dpdGNoT24obV92YWx1ZSwKKyAgICAg
ICAgWyZdIChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGUpIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlJikgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZTo6VUxvbmcgdmFsdWUpIHsKKyAgICAgICAgICAgIHJhbmdlLm1pbiA9IHZhbHVlOworICAg
ICAgICAgICAgcmFuZ2UubWF4ID0gdmFsdWU7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29u
c3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSYgdmFsdWUpIHsKKyAgICAgICAg
ICAgIGF1dG8gW21pbiwgbWF4XSA9IHZhbHVlOworICAgICAgICAgICAgcmFuZ2UubWluID0gbWlu
OworICAgICAgICAgICAgcmFuZ2UubWF4ID0gbWF4OworICAgICAgICB9CisgICAgKTsKKyAgICBy
ZXR1cm4gcmFuZ2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
LmgKaW5kZXggMjQwZmQ0OTY3MmJjZTgzNjdlYTcyMjlhNTZkN2E0ZTdjOGVmNmJhYi4uNDNjYWNm
NThiNGY5NGVhMDVmZDc2ZWNkOWMzNmZkZmU1N2RhZDIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxMyBAQAogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkRvdWJsZVJhbmdlLmgiCisjaW5jbHVkZSAiTG9u
Z1JhbmdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4K
IApAQCAtMzgsOTUgKzQxLDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZSB7CiBwdWJsaWM6Ci0KLSAgICBlbnVtIFR5cGUgewotICAgICAgICBV
bmRlZmluZWQsCi0gICAgICAgIERvdWJsZSwKLSAgICAgICAgVUxvbmcsCi0gICAgICAgIERvdWJs
ZVJhbmdlLAotICAgICAgICBVTG9uZ1JhbmdlLAotICAgIH07Ci0gICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKLSAgICAgICAg
ZG91YmxlIGFzRG91YmxlOwotICAgICAgICBpbnQgYXNJbnQ7Ci0gICAgfTsKLQotICAgIENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UoKQotICAgICAgICA6IG1fdHlwZShVbmRlZmluZWQpCisgICAgdXNp
bmcgVUxvbmcgPSBpbnQ7CisgICAgdXNpbmcgRG91YmxlID0gZG91YmxlOworICAgIHVzaW5nIFVM
b25nUmFuZ2UgPSBzdGQ6OnBhaXI8aW50LCBpbnQ+OworICAgIHVzaW5nIERvdWJsZVJhbmdlID0g
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPjsKKyAgICB1c2luZyBWYWx1ZU9yUmFuZ2UgPSBXVEY6
OlZhcmlhbnQ8VUxvbmcsIFVMb25nUmFuZ2UsIERvdWJsZSwgRG91YmxlUmFuZ2U+OworCisgICAg
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgpID0gZGVsZXRlOworICAgIGV4cGxpY2l0IENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UoVUxvbmcgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkgeyB9
CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShVTG9uZ1JhbmdlIHZhbHVlKQorICAgICAgICA6
IG1fdmFsdWUodmFsdWUpIHsgfQorICAgIGV4cGxpY2l0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Uo
RG91YmxlIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpIHsgfQorICAgIENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UoRG91YmxlUmFuZ2UgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1
ZSkgeyB9CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShWYWx1ZU9yUmFuZ2UmJiB2YWx1ZSkK
KyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKSB7IH0KKworICAgIFdlYkNvcmU6OkRv
dWJsZVJhbmdlIGFzRG91YmxlUmFuZ2UoKSBjb25zdDsKKyAgICBMb25nUmFuZ2UgYXNMb25nUmFu
Z2UoKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1fdmFsdWU7
CiAgICAgfQogCi0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShkb3VibGUgdmFsdWUpCi0gICAg
ICAgIDogbV90eXBlKERvdWJsZSkKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgewotICAgICAgICBtX21pbk9yVmFsdWUuYXNEb3VibGUgPSB2YWx1ZTsKKyAgICAgICAg
T3B0aW9uYWw8VmFsdWVPclJhbmdlPiB2YWx1ZTsKKyAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsK
KyAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShXVEZNb3ZlKCp2YWx1ZSkpOwogICAgIH0KIAot
ICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoaW50IHZhbHVlKQotICAgICAgICA6IG1fdHlwZShV
TG9uZykKLSAgICB7Ci0gICAgICAgIG1fbWluT3JWYWx1ZS5hc0ludCA9IHZhbHVlOwotICAgIH0K
LQotICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoZG91YmxlIG1pbiwgZG91YmxlIG1heCkKLSAg
ICAgICAgOiBtX3R5cGUoRG91YmxlUmFuZ2UpCi0gICAgewotICAgICAgICBtX21pbk9yVmFsdWUu
YXNEb3VibGUgPSBtaW47Ci0gICAgICAgIG1fbWF4LmFzRG91YmxlID0gbWF4OwotICAgIH0KLSAg
ICAKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKGludCBtaW4sIGludCBtYXgpCi0gICAgICAg
IDogbV90eXBlKFVMb25nUmFuZ2UpCi0gICAgewotICAgICAgICBtX21pbk9yVmFsdWUuYXNJbnQg
PSBtaW47Ci0gICAgICAgIG1fbWF4LmFzSW50ID0gbWF4OwotICAgIH0KLQotICAgIGNvbnN0IFZh
bHVlVW5pb24mIHJhbmdlTWluKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gRG91YmxlUmFuZ2UgfHwgbV90eXBlID09IFVMb25nUmFuZ2UpOwotICAgICAgICByZXR1cm4g
bV9taW5PclZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0IFZhbHVlVW5pb24mIHJhbmdlTWF4KCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRG91YmxlUmFuZ2UgfHwgbV90
eXBlID09IFVMb25nUmFuZ2UpOwotICAgICAgICByZXR1cm4gbV9tYXg7Ci0gICAgfQotCi0gICAg
Y29uc3QgVmFsdWVVbmlvbiYgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBEb3VibGUgfHwgbV90eXBlID09IFVMb25nKTsKLSAgICAgICAgcmV0dXJuIG1fbWlu
T3JWYWx1ZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSYpOwotCiBwcml2YXRlOgotICAgIFZhbHVlVW5pb24gbV9taW5PclZhbHVlIHsgfTsKLSAg
ICBWYWx1ZVVuaW9uIG1fbWF4IHsgfTsKLSAgICBUeXBlIG1fdHlwZSB7IFVuZGVmaW5lZCB9Owor
ICAgIFZhbHVlT3JSYW5nZSBtX3ZhbHVlOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
LXZvaWQgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Ci17Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oJm1fbWluT3JWYWx1ZSksIHNpemVvZihWYWx1ZVVuaW9uKSwgYWxp
Z25vZihWYWx1ZVVuaW9uKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJm1fbWF4KSwgc2l6ZW9mKFZhbHVlVW5pb24p
LCBhbGlnbm9mKFZhbHVlVW5pb24pKTsKLSAgICBlbmNvZGVyIDw8IG1fdHlwZTsKLX0KLQotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlT3JSYW5nZSkK
LXsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oJnZhbHVlT3JSYW5nZS5tX21pbk9yVmFsdWUpLCBzaXplb2YoVmFsdWVV
bmlvbiksIGFsaWdub2YoVmFsdWVVbmlvbikpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZU9yUmFuZ2UubV9t
YXgpLCBzaXplb2YoVmFsdWVVbmlvbiksIGFsaWdub2YoVmFsdWVVbmlvbikpCi0gICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKHZhbHVlT3JSYW5nZS5tX3R5cGUpOwotfQotCiBjbGFzcyBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIHsKIHB1YmxpYzoKICAgICBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzKCkgPSBkZWZhdWx0OwpAQCAtMTQ0LDM2ICs5OSwzNiBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBw
b3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICB2b2lk
IHNldFdpZHRoKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGgg
PSB3aWR0aDsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gKm1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGNvbnN0IENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGggPSBtYWtlT3B0aW9uYWwod2lkdGgpOyB9
CiAKICAgICBib29sIHN1cHBvcnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRD
b25zdHJhaW50cy5zdXBwb3J0c0hlaWdodCgpOyB9Ci0gICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICB2b2lkIHNl
dEhlaWdodChjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQg
PSBoZWlnaHQ7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiAqbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodChjb25zdCBDYXBh
YmlsaXR5VmFsdWVPclJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQgPSBtYWtlT3B0aW9uYWwoaGVp
Z2h0KTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c0ZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNGcmFtZVJhdGUoKTsgfQotICAgIGNvbnN0IENh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVS
YXRlOyB9Ci0gICAgdm9pZCBzZXRGcmFtZVJhdGUoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSYgZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisgICAgY29uc3QgQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gKm1fZnJhbWVS
YXRlOyB9CisgICAgdm9pZCBzZXRGcmFtZVJhdGUoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSYgZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gbWFrZU9wdGlvbmFsKGZyYW1lUmF0ZSk7IH0K
IAogICAgIGJvb2wgc3VwcG9ydHNGYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0
ZWRDb25zdHJhaW50cy5zdXBwb3J0c0ZhY2luZ01vZGUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0KICAgICB2b2lkIGFkZEZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkgeyBtX2Zh
Y2luZ01vZGUuYXBwZW5kKG1vZGUpOyB9CiAKICAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8o
KSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQXNwZWN0UmF0
aW8oKTsgfQotICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGFzcGVjdFJhdGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8o
Y29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRp
byA9IGFzcGVjdFJhdGlvOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNw
ZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiAqbV9hc3BlY3RSYXRpbzsgfQorICAgIHZvaWQgc2V0
QXNwZWN0UmF0aW8oY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgYXNwZWN0UmF0aW8pIHsg
bV9hc3BlY3RSYXRpbyA9IG1ha2VPcHRpb25hbChhc3BlY3RSYXRpbyk7IH0KIAogICAgIGJvb2wg
c3VwcG9ydHNWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzVm9sdW1lKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1
bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0
IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQor
ICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJu
ICptX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IG1ha2VPcHRpb25hbCh2b2x1bWUpOyB9CiAKICAg
ICBib29sIHN1cHBvcnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNTYW1wbGVSYXRlKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFs
dWVPclJhbmdlJiBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0g
ICAgdm9pZCBzZXRTYW1wbGVSYXRlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBs
ZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQorICAgIGNvbnN0IENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiAqbV9zYW1wbGVSYXRl
OyB9CisgICAgdm9pZCBzZXRTYW1wbGVSYXRlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Um
IHNhbXBsZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gbWFrZU9wdGlvbmFsKHNhbXBsZVJhdGUpOyB9
CiAKICAgICBib29sIHN1cHBvcnRzU2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9y
dGVkQ29uc3RyYWludHMuc3VwcG9ydHNTYW1wbGVTaXplKCk7IH0KLSAgICBjb25zdCBDYXBhYmls
aXR5VmFsdWVPclJhbmdlJiBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVTaXpl
OyB9Ci0gICAgdm9pZCBzZXRTYW1wbGVTaXplKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Um
IHNhbXBsZVNpemUpIHsgbV9zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTsgfQorICAgIGNvbnN0IENh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiAqbV9zYW1w
bGVTaXplOyB9CisgICAgdm9pZCBzZXRTYW1wbGVTaXplKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UmIHNhbXBsZVNpemUpIHsgbV9zYW1wbGVTaXplID0gbWFrZU9wdGlvbmFsKHNhbXBsZVNp
emUpOyB9CiAKICAgICBlbnVtIGNsYXNzIEVjaG9DYW5jZWxsYXRpb24gOiBib29sIHsKICAgICAg
ICAgUmVhZE9ubHkgPSAwLApAQCAtMTk4LDE0ICsxNTMsMTQgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKTsKIAogcHJpdmF0ZToK
LSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fd2lkdGg7Ci0gICAgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSBtX2hlaWdodDsKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fYXNwZWN0UmF0
aW87Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX2ZyYW1lUmF0ZTsKKyAgICBPcHRpb25h
bDxDYXBhYmlsaXR5VmFsdWVPclJhbmdlPiBtX3dpZHRoOworICAgIE9wdGlvbmFsPENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2U+IG1faGVpZ2h0OworICAgIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U+IG1fYXNwZWN0UmF0aW87CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZT4gbV9mcmFtZVJhdGU7CiAgICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSBtX3ZvbHVtZTsKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlUmF0ZTsKLSAg
ICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlU2l6ZTsKKyAgICBPcHRpb25hbDxDYXBh
YmlsaXR5VmFsdWVPclJhbmdlPiBtX3ZvbHVtZTsKKyAgICBPcHRpb25hbDxDYXBhYmlsaXR5VmFs
dWVPclJhbmdlPiBtX3NhbXBsZVJhdGU7CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JS
YW5nZT4gbV9zYW1wbGVTaXplOwogICAgIEVjaG9DYW5jZWxsYXRpb24gbV9lY2hvQ2FuY2VsbGF0
aW9uIHsgRWNob0NhbmNlbGxhdGlvbjo6UmVhZE9ubHkgfTsKICAgICBBdG9tU3RyaW5nIG1fZGV2
aWNlSWQ7CiAgICAgQXRvbVN0cmluZyBtX2dyb3VwSWQ7CkBAIC0yMjQsMTAgKzE3OSwxMCBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgICAgICA8PCBtX3ZvbHVtZQogICAgICAgICA8PCBtX3NhbXBsZVJhdGUK
ICAgICAgICAgPDwgbV9zYW1wbGVTaXplCisgICAgICAgIDw8IG1fZWNob0NhbmNlbGxhdGlvbgog
ICAgICAgICA8PCBtX2RldmljZUlkCiAgICAgICAgIDw8IG1fZ3JvdXBJZAotICAgICAgICA8PCBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzCi0gICAgICAgIDw8IG1fZWNob0NhbmNlbGxhdGlvbjsKKyAg
ICAgICAgPDwgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KQEAgLTI0MSwyNyArMTk2LDEyIEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlYWx0aW1lTWVkaWFTb3VyCiAgICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX3ZvbHVtZSkKICAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fc2FtcGxlUmF0ZSkKICAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fc2FtcGxlU2l6ZSkKKyAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fZWNob0NhbmNlbGxhdGlvbikKICAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fZGV2aWNlSWQpCiAgICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKGNhcGFiaWxpdGllcy5tX2dyb3VwSWQpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KGNhcGFiaWxpdGllcy5tX3N1cHBvcnRlZENvbnN0cmFpbnRzKQotICAgICAgICAmJiBkZWNvZGVy
LmRlY29kZShjYXBhYmlsaXRpZXMubV9lY2hvQ2FuY2VsbGF0aW9uKTsKKyAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fc3VwcG9ydGVkQ29uc3RyYWludHMpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU+IHsK
LSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpUeXBlLAotICAgICAgICBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVP
clJhbmdlOjpUeXBlOjpVbmRlZmluZWQsCi0gICAgICAgIFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2U6OlR5cGU6OkRvdWJsZSwKLSAgICAgICAgV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVl
T3JSYW5nZTo6VHlwZTo6VUxvbmcsCi0gICAgICAgIFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U6OlR5cGU6OkRvdWJsZVJhbmdlLAotICAgICAgICBXZWJDb3JlOjpDYXBhYmlsaXR5VmFs
dWVPclJhbmdlOjpUeXBlOjpVTG9uZ1JhbmdlCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgotCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlLmNwcAppbmRleCBiMjY4YjJiNTUyN2RmZTI1MmU2MWVmNGUyZThmMzA2YTk3
M2I3MTAzLi5mNGY0N2JmZjBkYjQ1ODg0ZDQyZGMzZTc5ZDUyZTI1ZmZjMTBiMGFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTgyLDEwICsxODIsMTAgQEAgdm9p
ZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlQ2FwYWJpbGl0aWVzKFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXQKICAgICAgICAgbWF4aW11bUFzcGVjdFJhdGlvID0gbWF4aW11
bVdpZHRoOwogICAgIH0KIAotICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aCh7IG1pbmltdW1XaWR0
aCwgbWF4aW11bVdpZHRoIH0pOwotICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoeyBtaW5pbXVt
SGVpZ2h0LCBtYXhpbXVtSGVpZ2h0IH0pOwotICAgIGNhcGFiaWxpdGllcy5zZXRBc3BlY3RSYXRp
byh7IG1pbmltdW1Bc3BlY3RSYXRpbywgbWF4aW11bUFzcGVjdFJhdGlvIH0pOwotICAgIGNhcGFi
aWxpdGllcy5zZXRGcmFtZVJhdGUoeyBtaW5pbXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJhbWVSYXRl
IH0pOworICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpV
TG9uZ1JhbmdlIHsgbWluaW11bVdpZHRoLCBtYXhpbXVtV2lkdGggfSk7CisgICAgY2FwYWJpbGl0
aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlIHsgbWluaW11
bUhlaWdodCwgbWF4aW11bUhlaWdodCB9KTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0
aW8oQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgeyBtaW5pbXVtQXNwZWN0UmF0
aW8sIG1heGltdW1Bc3BlY3RSYXRpbyB9KTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRl
KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlIHsgbWluaW11bUZyYW1lUmF0ZSwg
bWF4aW11bUZyYW1lUmF0ZSB9KTsKIH0KIAogYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFs
PGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNDU2ZWYwNjcw
NmJiNmEyNTgyODFlMWUzODI0MDFjYzAyYmM3ODBiOS4uMDFjMGE1MjcxMGQ4ZDY2ZWE5ZWI1MWI5
MGYzZDBlZDIwMzRlZmNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBkZWZhdWx0Vm9sdW1lQ2FwYWJpbGl0
eSgpCiB7Ci0gICAgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMC4wLCAxLjApOworICAg
IHJldHVybiBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZSB7IDAuMCwgMS4wIH07
CiB9CiBjb25zdCBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6RWNob0Nh
bmNlbGxhdGlvbiBkZWZhdWx0RWNob0NhbmNlbGxhdGlvbkNhcGFiaWxpdHkgPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpFY2hvQ2FuY2VsbGF0aW9uOjpSZWFkV3JpdGU7CiAKQEAg
LTE3Myw3ICsxNzMsNyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBH
U3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcwogICAgIGNhcGFiaWxpdGll
cy5zZXREZXZpY2VJZChoYXNoZWRJZCgpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0RWNob0NhbmNl
bGxhdGlvbihkZWZhdWx0RWNob0NhbmNlbGxhdGlvbkNhcGFiaWxpdHkpOwogICAgIGNhcGFiaWxp
dGllcy5zZXRWb2x1bWUoZGVmYXVsdFZvbHVtZUNhcGFiaWxpdHkoKSk7Ci0gICAgY2FwYWJpbGl0
aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShtaW5TYW1wbGVSYXRlLCBt
YXhTYW1wbGVSYXRlKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSB7IG1pblNhbXBsZVJhdGUsIG1heFNhbXBsZVJhdGUg
fSk7CiAgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKGNhcGFiaWxpdGllcyk7CiAKICAgICBy
ZXR1cm4gbV9jYXBhYmlsaXRpZXMudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCA0YmNkNTM5MGU1YTEyYzVhNjhhZTRjMDMyMDYxMDE1ZDhhYWI3NWQ4Li4z
NjhmMGYyYWYyM2UwYTlmNzVhMTYxMmU4YTU0MDliOWVjYWE2M2EyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHN0YXRpYyBzaXplX3QgcHJlZmVycmVkSU9CdWZmZXJTaXplKCk7CiAKLSAgICBDYXBh
YmlsaXR5VmFsdWVPclJhbmdlIHNhbXBsZVJhdGVDYXBhY2l0aWVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg4MDAwLCA5NjAwMCk7IH0KKyAgICBDYXBhYmls
aXR5VmFsdWVPclJhbmdlIHNhbXBsZVJhdGVDYXBhY2l0aWVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSB7IDgwMDAsIDk2MDAwIH07IH0K
ICAgICBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG1pY3JvcGhvbmVGb3JtYXQoKSBj
b25zdCB7IHJldHVybiBtX21pY3JvcGhvbmVQcm9jRm9ybWF0OyB9CiAKICAgICBib29sIGhhc0F1
ZGlvVW5pdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW9Vbml0OyB9CkBAIC03NTgsNyArNzU4
LDcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJhaW50cygp
KTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hlZElkKCkpOwogICAgICAg
ICBjYXBhYmlsaXRpZXMuc2V0RWNob0NhbmNlbGxhdGlvbihSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjpFY2hvQ2FuY2VsbGF0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICBjYXBhYmls
aXRpZXMuc2V0Vm9sdW1lKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMC4wLCAxLjApKTsKKyAgICAg
ICAgY2FwYWJpbGl0aWVzLnNldFZvbHVtZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVS
YW5nZSB7IDAuMCwgMS4wIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0U2FtcGxlUmF0ZSh1
bml0KCkuc2FtcGxlUmF0ZUNhcGFjaXRpZXMoKSk7CiAgICAgICAgIG1fY2FwYWJpbGl0aWVzID0g
V1RGTW92ZShjYXBhYmlsaXRpZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcAppbmRleCAzZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcw
NjYzLi4zMzgwZjhiZDNjNGQ0OWZlZTJkODAwZDU4ODg2NmQ4ZjRlZGY2ZDA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDkgKzExNSw5IEBAIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OmNhcGFiaWxpdGllcygpCiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHRoZXNlIGJlPwotICAgICAgICBjYXBhYmls
aXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAzODQwKSk7Ci0gICAgICAg
IGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAyMTYwKSk7
Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSguMDEsIDMwLjApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2U6OlVMb25nUmFuZ2UgeyAxLCAzODQwIH0pOworICAgICAgICBjYXBhYmlsaXRp
ZXMuc2V0SGVpZ2h0KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25nUmFuZ2UgeyAxLCAyMTYw
IH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2U6OkRvdWJsZVJhbmdlIHsgLjAxLCAzMC4wIH0pOwogCiAgICAgICAgIG1fY2FwYWJpbGl0
aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5p
dC5oCmluZGV4IDQwYTNiMmYwMjY4YzhjNzFlMTQ0YzRkYTFjZDZiODNhMjhhMzU5MmMuLjY4Y2Rj
MTEyMjRmMGI0N2IxNTMyZGM4YTQ4ODdlNDIwNjA2NGNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJl
ZFVuaXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVsYXlTYW1w
bGVzKFNlY29uZHMpIGZpbmFsOwogCi0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBzYW1wbGVS
YXRlQ2FwYWNpdGllcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UoNDQxMDAsIDQ4MDAwKTsgfQorICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Ugc2FtcGxlUmF0
ZUNhcGFjaXRpZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
OjpVTG9uZ1JhbmdlIHsgNDQxMDAsIDQ4MDAwIH07IH0KIAogICAgIHZvaWQgdGljaygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwCmluZGV4IDc1ZGI4ODA1ZjQ3OWYyNGIzMzExMzQ3NWFmZDlmZGRmZDRhNjRi
ZDEuLjk4NzVmNGE5Nzc0YWFhZGZlMmE4YTAzODQ4YmM4ZTQ1ODRiOTAyMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTE5LDkgKzExOSw5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKQogICAgICAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygp
LnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogCiAgICAgICAgIGNhcGFiaWxpdGllcy5zZXREZXZp
Y2VJZChoYXNoZWRJZCgpKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldFZvbHVtZShDYXBhYmls
aXR5VmFsdWVPclJhbmdlKDAuMCwgMS4wKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRWb2x1
bWUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgeyAwLjAsIDEuMCB9KTsKICAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldEVjaG9DYW5jZWxsYXRpb24oUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6RWNob0NhbmNlbGxhdGlvbjo6UmVhZFdyaXRlKTsKLSAgICAgICAgY2Fw
YWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg0NDEwMCwgNDgw
MDApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZTo6VUxvbmdSYW5nZSB7IDQ0MTAwLCA0ODAwMCB9KTsKIAogICAgICAgICBtX2NhcGFi
aWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IGU0OGM4YzYyM2FhZjk3NmQxZWJmYzM4MjJkMWY4ZjY5NzBiMWJlZWIuLjg2MGE4MjhkMWJk
NDY4YzYyOGUxNDhiZjVhZGU0YjMzOTNmZWJlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMy
LDkgKzEzMiw5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpjYXBhYmlsaXRpZXMoKQogICAgICAgICAgICAgdXBkYXRlQ2Fw
YWJpbGl0aWVzKGNhcGFiaWxpdGllcyk7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RGV2
aWNlSWQoaGFzaGVkSWQoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYXBhYmls
aXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg3MiwgMjg4MCkpOwotICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1LCAx
ODAwKSk7Ci0gICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2UoLjAxLCA2MC4wKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lk
dGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VUxvbmdSYW5nZSB7IDcyLCAyODgwIH0pOworICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpV
TG9uZ1JhbmdlIHsgNDUsIDE4MDAgfSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJh
bWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlIHsgLjAxLCA2MC4wIH0p
OwogICAgICAgICB9CiAKICAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKGNhcGFiaWxp
dGllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBiYjJiM2M0NjAxYzBlMzg3MmFjYzFhZTMzYzk1ODdjNDgyM2JmZDNlLi4wYzgwZTg3MjZkNjNl
Nzc1NjNmZjZmM2QxNTk2ZTAzM2NjYWViMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTE1NywxNCArMTU3LDIxIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIFQgdmFsdWU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pIHsKKyAgICAgICAgICAgIG9wdGlv
bmFsID0gVDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuIGRlY29kZXIuaXNW
YWxpZCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVCB2YWx1ZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgb3B0aW9u
YWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIG9wdGlvbmFsID0gV1RGTW92ZSh2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgc3RhdGlj
IE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7CiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRW5nYWdlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425558</attachid>
            <date>2021-04-08 16:31:47 -0700</date>
            <delta_ts>2021-04-10 19:50:55 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-224090-20210408163148.patch</filename>
            <type>text/plain</type>
            <size>52764</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY5NzY1OWYyZjVmMTM5
NDM0ZjI2MWVmYjU1NGQ4NTBmMzMzOWQzMS4uOGYxNjdiYjVjYTMzZTUzMzdhNjRlNmJjMDM1YThh
MGI4YjA3Njg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0wNC0wOCAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtDb3JlSVBDXSBFbmNv
ZGluZy9kZWNvZGluZyBvZiBXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHRyYW5zbWl0
cyBwYWRkaW5nIGJ5dGVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMjQwOTA+Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTk4MTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpUeXBlIGVudW0gYW5kCisgICAgICAgIHRoZSBWYWx1ZVVuaW9uIHVu
aW9uIHdpdGggYSBXVEY6OlZhcmlhbnQgY29udGFpbmluZyBvbmUgb2YgdGhlCisgICAgICAgIGZv
dXIgdHlwZXMgb2YgdmFsdWVzLCBpbmNsdWRpbmcgc3RkOjpwYWlyPD4gdG8gaG9sZCByYW5nZXMu
IFRoZQorICAgICAgICBEb3VibGVSYW5nZSBhbmQgTG9uZ1JhbmdlIElETCB0eXBlcyBhcmUgbm90
IHVzZWQgZm9yIGludGVybmFsCisgICAgICAgIHJlcHJlc2VudGF0aW9ucyB0byBrZWVwIHRoZXNl
IGNsYXNzZXMgc2ltcGxlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1hZGRFdmVudExpc3RlbmVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbWVkaWFz
dHJlYW0vY29uc3RyYWludC1pbnRyaW5zaWMtc2l6ZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL21lZGlhL21lZGlhLXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1pZnJhbWUtYWxsb3ct
YXR0cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc3Ry
ZWFtL2dldC1kaXNwbGF5LW1lZGlhLWlmcmFtZS1hbGxvdy1hdHRyaWJ1dGUuaHRtbAorICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVj
b3JkL01lZGlhUmVjb3JkZXItYml0cmF0ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICB3ZWJy
dGMvYWRkSUNFQ2FuZGlkYXRlLWNsb3NlZC5odG1sCisgICAgICAgICAgICAgICB3ZWJydGMvaWNl
LWNhbmRpZGF0ZS1zZHBNTGluZUluZGV4Lmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0Yy9saWJ3
ZWJydGMvZGVzY3JpcHRpb25HZXR0ZXJzLmh0bWwKKyAgICAgICAgICAgICAgIHdlYnJ0Yy9wZWVy
Y29ubmVjdGlvbi1wYWdlLWNhY2hlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXR5RG91
YmxlUmFuZ2UpOiBEZWxldGUuCisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXR5SW50UmFuZ2Up
OiBEZWxldGUuCisgICAgICAgIC0gTW92ZSB0aGVzZSBpbnRvIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2U6OmFzRG91YmxlUmFuZ2UoKSBhbmQKKyAgICAgICAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
Ojphc0xvbmdSYW5nZSgpIHNvIHRoYXQgdGhlIG1fdmFsdWUKKyAgICAgICAgICB2YXJpYW50IGRv
ZXMgbm90IGhhdmUgdG8gYmUgZXhwb3NlZCB2aWEgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAgLSBTd2l0
Y2ggdG8gdXNlIDo6YXNEb3VibGVSYW5nZSgpIGFuZCA6OmFzTG9uZ1JhbmdlKCkuCisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIC0gQWRkIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3Bw
IHRvIHByb2plY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1
cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpmaXRuZXNzRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAtIFN3aXRjaCB0byB1c2UgOjph
c0RvdWJsZVJhbmdlKCkgYW5kIDo6YXNMb25nUmFuZ2UoKS4KKyAgICAgICAgLSBOT1RFOiBUaGlz
IGNoYW5nZXMgYmVoYXZpb3Igc2xpZ2h0bHkgaW4gdGhhdCByZXF1ZXN0aW5nIGEKKyAgICAgICAg
ICByYW5nZSBmcm9tIGEgc2luZ2xlIERvdWJsZS9Mb25nIHZhbHVlIHdpbGwgbm8gbG9uZ2VyIHJl
dHVybgorICAgICAgICAgIGFuIHVuaW5pdGlhbGl6ZWQgdmFsdWUgKHByaW9yIHRvIHIyNzUxNDIp
IG9yIHplcm8gZm9yIHRoZSBtYXgKKyAgICAgICAgICB2YWx1ZSwgYnV0IGluc3RlYWQgcmV0dXJu
IGEgcmFuZ2Ugd2hlcmUgbWluID09IG1heCA9PSB2YWx1ZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3BwOiBBZGQuCisg
ICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjphc0RvdWJsZVJhbmdlIGNv
bnN0KTogQWRkLgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6YXNM
b25nUmFuZ2UgY29uc3QpOiBBZGQuCisgICAgICAgIC0gVXNlIEMrKzE3IHN0cnVjdHVyZWQgYmlu
ZGluZ3MgdG8gYXZvaWQgdGhlIHVzZSBvZiAuZmlyc3QgYW5kCisgICAgICAgICAgLnNlY29uZCBh
Y2Nlc3NvcnMgZnJvbSBzdGQ6OnBhaXIgdG8gZ2V0IG1pbi9tYXggdmFsdWVzLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZSk6IERlbGV0
ZS4KKyAgICAgICAgLSBSZW1vdmUgZW51bSBpbiBmYXZvciBvZiBXVEY6OlZhcmlhbnQuCisgICAg
ICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpDYXBhYmlsaXR5VmFsdWVPclJh
bmdlKToKKyAgICAgICAgLSBEZWxldGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBzaW5jZSB0aGVyZSBp
cyBubyBuZWVkIHRvIGNyZWF0ZSBhbgorICAgICAgICAgIGVtcHR5IG9iamVjdC4KKyAgICAgICAg
LSBVcGRhdGUgY29uc3RydWN0b3JzIGZvciBXVEY6OlZhcmlhbnQuCisgICAgICAgIChXZWJDb3Jl
OjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjp0eXBlIGNvbnN0KTogRGVsZXRlLgorICAgICAgICAo
V2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6cmFuZ2VNaW4gY29uc3QpOiBEZWxldGUu
CisgICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpyYW5nZU1heCBjb25z
dCk6IERlbGV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OnZh
bHVlIGNvbnN0KTogRGVsZXRlLgorICAgICAgICAtIFJlbW92ZSB1bnVzZWQgbWV0aG9kcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpkZWNvZGUpOgorICAgICAg
ICAtIFByb3ZpZGUgSVBDIGVuY29kZXIgYW5kIGRlY29kZXIgdGhhdCBkb24ndCByZXF1aXJlIGEg
ZGVmYXVsdAorICAgICAgICAgIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJp
bGl0eVZhbHVlT3JSYW5nZTo6YXNEb3VibGVSYW5nZSBjb25zdCk6IEFkZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmFzTG9uZ1JhbmdlIGNvbnN0KTogQWRkLgor
ICAgICAgICAtIE1vdmUgV2ViQ29yZTo6Y2FwYWJpbGl0eURvdWJsZVJhbmdlKCkgYW5kCisgICAg
ICAgICAgV2ViQ29yZTo6Y2FwYWJpbGl0eUludFJhbmdlKCkgZnJvbSBNZWRpYVN0cmVhbVRyYWNr
LmNwcCB0bworICAgICAgICAgIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpoZWlnaHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0SGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZyYW1l
UmF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllczo6YXNwZWN0UmF0aW8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0QXNwZWN0UmF0aW8pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6dm9sdW1lIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNl
dFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OnNldFNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2FtcGxlU2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRTYW1wbGVTaXpl
KToKKyAgICAgICAgLSBNYWtlIGFsbCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIGluc3RhbmNlIHZh
cmlhYmxlcyBPcHRpb25hbDw+CisgICAgICAgICAgc2luY2UgdGhleSBhcmUsIGluIGZhY3QsIGFs
bCBvcHRpb25hbCB2YWx1ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZGVjb2RlKToKKyAgICAgICAgLSBVcGRhdGUgb3JkZXIg
b2YgZW5jb2RlZC9kZWNvZGVkIGluc3RhbmNlIHZhcmlhYmxlcyB0byBtYXRjaAorICAgICAgICAg
IHRoZSBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcy4KKyAgICAgICAgKHN0cnVj
dCBXVEY6OkVudW1UcmFpdHM8V2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZT4p
OgorICAgICAgICAtIFJlbW92ZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpUeXBlOjpVbmRlZmlu
ZWQgZW51bS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9DYXB0dXJl
U291cmNlOjp1cGRhdGVDYXBhYmlsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGVmYXVsdFZvbHVtZUNhcGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcyk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwYWJpbGl0
aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVk
VW5pdC5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNhcGFiaWxp
dGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y2FwYWJpbGl0
aWVzKToKKyAgICAgICAgLSBVcGRhdGUgdG8gdXNlIG5ldyBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
IGNvbnN0cnVjdG9ycy4KKwogMjAyMS0wNC0wMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFVCU2FuOiBSZW5kZXJWaWV3LmNwcDo4MzE6OTogcnVudGltZSBl
cnJvcjogbG9hZCBvZiB2YWx1ZSBubm4sIHdoaWNoIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB0
eXBlICdib29sJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNWQ2NzUxN2ZmMjBjNzVjODcwZTYyZTAxODlhYTJiOWQ5
ZTRiNTgxLi4wMGViNGNhYTM4YTc4NzE4Y2MyNzI5MjMyNmFkNDNiOTUxNTJmZmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA0LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvcmVJUENdIEVuY29kaW5nL2RlY29kaW5nIG9mIFdlYkNv
cmU6OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgdHJhbnNtaXRzIHBhZGRpbmcgYnl0ZXMKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIyNDA5MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzc1OTgxNjYwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8T3B0aW9uYWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAtIEFkZCBjb25zdGV4cHIg
SGFzTW9kZXJuRGVjb2RlclQ8Vj4gY2hlY2suIFRoaXMgYWxzbyByZW1vdmVzCisgICAgICAgICAg
dGhlIG5lZWQgZm9yIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgdGhlIGRlY29kZWQgb2JqZWN0
LgorCiAyMDIxLTA0LTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFVQXSBQb3dlciByZWdyZXNzaW9uOiBhdWRpbyBoYXJkd2FyZSBpcyBjb25maWd1cmVk
IGZvciAxMjggZnJhbWUgcHJlZmVycmVkIGJ1ZmZlciBzaXplIGR1cmluZyBWaWRlb0F1ZGlvIHBs
YXliYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA2YzFmMTdhMDNmNzkyMjUxYTUyYmE4YWQ0MDAyZGU4
YWJiYTdiZTQ3Li4wZTY1NWQyMzY0MjUxMTFjZTIwNTcxM2ZlZjE5MWIwNGExOWEzODAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjc2LDQ2ICsyNzYsNiBAQCBNZWRpYVN0cmVhbVRyYWNrOjpU
cmFja1NldHRpbmdzIE1lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKCkgY29uc3QKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgRG91YmxlUmFuZ2UgY2FwYWJpbGl0eURvdWJsZVJh
bmdlKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlKQotewotICAgIERvdWJsZVJh
bmdlIHJhbmdlOwotICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gICAgY2FzZSBDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpEb3VibGU6Ci0gICAgICAgIHJhbmdlLm1pbiA9IHZhbHVlLnZhbHVl
KCkuYXNEb3VibGU7Ci0gICAgICAgIHJhbmdlLm1heCA9IHJhbmdlLm1pbjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZToKLSAgICAg
ICAgcmFuZ2UubWluID0gdmFsdWUucmFuZ2VNaW4oKS5hc0RvdWJsZTsKLSAgICAgICAgcmFuZ2Uu
bWF4ID0gdmFsdWUucmFuZ2VNYXgoKS5hc0RvdWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVbmRlZmluZWQ6Ci0gICAgY2FzZSBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlOjpVTG9uZzoKLSAgICBjYXNlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVM
b25nUmFuZ2U6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1
cm4gcmFuZ2U7Ci19Ci0KLXN0YXRpYyBMb25nUmFuZ2UgY2FwYWJpbGl0eUludFJhbmdlKGNvbnN0
IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlKQotewotICAgIExvbmdSYW5nZSByYW5nZTsK
LSAgICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewotICAgIGNhc2UgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZTo6VUxvbmc6Ci0gICAgICAgIHJhbmdlLm1pbiA9IHZhbHVlLnZhbHVlKCkuYXNJbnQ7Ci0g
ICAgICAgIHJhbmdlLm1heCA9IHJhbmdlLm1pbjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlOjpVTG9uZ1JhbmdlOgotICAgICAgICByYW5nZS5taW4gPSB2
YWx1ZS5yYW5nZU1pbigpLmFzSW50OwotICAgICAgICByYW5nZS5tYXggPSB2YWx1ZS5yYW5nZU1h
eCgpLmFzSW50OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2U6OlVuZGVmaW5lZDoKLSAgICBjYXNlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZToK
LSAgICBjYXNlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlOgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJhbmdlOwotfQotCiBzdGF0
aWMgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0eVN0cmluZ1ZlY3Rvcihjb25zdCBWZWN0b3I8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+JiBtb2RlcykKIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CkBAIC0zNDAsMjEgKzMwMCwyMSBAQCBNZWRpYVN0cmVh
bVRyYWNrOjpUcmFja0NhcGFiaWxpdGllcyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRp
ZXMoKSBjb25zdAogICAgIGF1dG8gY2FwYWJpbGl0aWVzID0gbV9wcml2YXRlLT5jYXBhYmlsaXRp
ZXMoKTsKICAgICBUcmFja0NhcGFiaWxpdGllcyByZXN1bHQ7CiAgICAgaWYgKGNhcGFiaWxpdGll
cy5zdXBwb3J0c1dpZHRoKCkpCi0gICAgICAgIHJlc3VsdC53aWR0aCA9IGNhcGFiaWxpdHlJbnRS
YW5nZShjYXBhYmlsaXRpZXMud2lkdGgoKSk7CisgICAgICAgIHJlc3VsdC53aWR0aCA9IGNhcGFi
aWxpdGllcy53aWR0aCgpLmFzTG9uZ1JhbmdlKCk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBw
b3J0c0hlaWdodCgpKQotICAgICAgICByZXN1bHQuaGVpZ2h0ID0gY2FwYWJpbGl0eUludFJhbmdl
KGNhcGFiaWxpdGllcy5oZWlnaHQoKSk7CisgICAgICAgIHJlc3VsdC5oZWlnaHQgPSBjYXBhYmls
aXRpZXMuaGVpZ2h0KCkuYXNMb25nUmFuZ2UoKTsKICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBv
cnRzQXNwZWN0UmF0aW8oKSkKLSAgICAgICAgcmVzdWx0LmFzcGVjdFJhdGlvID0gY2FwYWJpbGl0
eURvdWJsZVJhbmdlKGNhcGFiaWxpdGllcy5hc3BlY3RSYXRpbygpKTsKKyAgICAgICAgcmVzdWx0
LmFzcGVjdFJhdGlvID0gY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvKCkuYXNEb3VibGVSYW5nZSgp
OwogICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkKLSAgICAgICAgcmVz
dWx0LmZyYW1lUmF0ZSA9IGNhcGFiaWxpdHlEb3VibGVSYW5nZShjYXBhYmlsaXRpZXMuZnJhbWVS
YXRlKCkpOworICAgICAgICByZXN1bHQuZnJhbWVSYXRlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0
ZSgpLmFzRG91YmxlUmFuZ2UoKTsKICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzRmFjaW5n
TW9kZSgpKQogICAgICAgICByZXN1bHQuZmFjaW5nTW9kZSA9IGNhcGFiaWxpdHlTdHJpbmdWZWN0
b3IoY2FwYWJpbGl0aWVzLmZhY2luZ01vZGUoKSk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBw
b3J0c1ZvbHVtZSgpKQotICAgICAgICByZXN1bHQudm9sdW1lID0gY2FwYWJpbGl0eURvdWJsZVJh
bmdlKGNhcGFiaWxpdGllcy52b2x1bWUoKSk7CisgICAgICAgIHJlc3VsdC52b2x1bWUgPSBjYXBh
YmlsaXRpZXMudm9sdW1lKCkuYXNEb3VibGVSYW5nZSgpOwogICAgIGlmIChjYXBhYmlsaXRpZXMu
c3VwcG9ydHNTYW1wbGVSYXRlKCkpCi0gICAgICAgIHJlc3VsdC5zYW1wbGVSYXRlID0gY2FwYWJp
bGl0eUludFJhbmdlKGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCkpOworICAgICAgICByZXN1bHQu
c2FtcGxlUmF0ZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCkuYXNMb25nUmFuZ2UoKTsKICAg
ICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpKQotICAgICAgICByZXN1bHQu
c2FtcGxlU2l6ZSA9IGNhcGFiaWxpdHlJbnRSYW5nZShjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgp
KTsKKyAgICAgICAgcmVzdWx0LnNhbXBsZVNpemUgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgp
LmFzTG9uZ1JhbmdlKCk7CiAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0VjaG9DYW5jZWxs
YXRpb24oKSkKICAgICAgICAgcmVzdWx0LmVjaG9DYW5jZWxsYXRpb24gPSBjYXBhYmlsaXR5Qm9v
bGVhblZlY3RvcihjYXBhYmlsaXRpZXMuZWNob0NhbmNlbGxhdGlvbigpKTsKICAgICBpZiAoY2Fw
YWJpbGl0aWVzLnN1cHBvcnRzRGV2aWNlSWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWU0ZmE2MGNj
ZGRhZmRjMTVkZDY1MTM5MWYxYjIxMTZiMzczNGE0NS4uMTdkYjRmNzM0ZWVhMjA5OTUzNDdjMWE5
NTE2YmRjZDRkMjgyYWM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxMDAsNiArMjEwMCw3IEBAIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwCiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5jcHAKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTMwMmRiMGQwYzY4MjIzMWY1NjJmZTkw
OGM5ZWIxNTExYjNmOTYxLi45ZDFjODE2ZmI4M2FlZDQ4ZjAzOWI2NmQ1YTkzZmQ1NWZmMTcyNzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04MjE5LDYgKzgyMTksNyBAQAogCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQgLyog
U2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
bGVjdGlvblJhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIzOEJG
OTI1MzY5QTg4MDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdGlvblJhbmdlRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QkQyQjM2MjUyNzc5NzgwMDU1RDk1QSAvKiBHbG9iYWxF
dmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2ZW50SGFuZGxlcnMrU2Vs
ZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0QzNGRTBCMjYxRTlE
MTYwMEQ0MEJCQSAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NEM5OTE4MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xs
YmFyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
Y3JvbGxiYXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkx
ODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaGVtZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTc1MjksNiArMTc1MzAsNyBAQAogCQkJCTVDREQ4MzNBMUU0MzI0QkIw
MDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTRGNjU2
QjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgKi8sCiAJCQkJNEE0
RjY1NkMxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLywKKwkJCQk0
NEMzRkUwQjI2MUU5RDE2MDBENDBCQkEgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cy5jcHAgKi8sCiAJCQkJNEE0RjY1NkQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQk0QTBGRkE5RjFBQUY1RUEyMDA2MjgwM0IgLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8sCiAJCQkJNEEwRkZBQTAxQUFGNUVBMjAw
NjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKaW5kZXggMjc4ZDE5Njc4ZGIzZWEzNDRkNTc3MzE1ZmRmMDAzMGMxMGU5MGNhMC4uMzFm
ZjAyZWE4NTBkMmY1NzNmOWQ0NDliY2U0Y2Y5NDViNjU1YzRkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMxNSwx
NiArMzE1LDE2IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJh
bWVSYXRlKE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoCiAgICAgaWYgKHdpZHRoQ29uc3Ry
YWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNXaWR0aCgpKSB7CiAgICAgICAgIGRvdWJsZSBj
b25zdHJhaW50RGlzdGFuY2UgPSBmaXRuZXNzRGlzdGFuY2UoKndpZHRoQ29uc3RyYWludCk7CiAg
ICAgICAgIGlmIChzdGQ6OmlzaW5mKGNvbnN0cmFpbnREaXN0YW5jZSkpIHsKLSAgICAgICAgICAg
IGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMud2lkdGgoKTsKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlIGZhaWxl
ZCB3aWR0aCBjb25zdHJhaW50LCBjYXBhYmlsaXRpZXMgYXJlIFslZCwgJWRdIiwgcmFuZ2UucmFu
Z2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgICAgICBhdXRv
IHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlIGZhaWxlZCB3aWR0aCBjb25zdHJhaW50LCBjYXBhYmlsaXRpZXMgYXJlIFslZCwgJWRdIiwg
KnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gd2lk
dGhDb25zdHJhaW50LT5uYW1lKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIAogICAgICAgICBkaXN0YW5jZSA9IHN0ZDo6bWluKGRpc3RhbmNlLCBjb25zdHJhaW50RGlz
dGFuY2UpOwogICAgICAgICBpZiAod2lkdGhDb25zdHJhaW50LT5pc01hbmRhdG9yeSgpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgICAg
ICB3aWR0aCA9IHdpZHRoQ29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgp
LndpZHRoKCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQp
OworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpLmFzTG9uZ1Jh
bmdlKCk7CisgICAgICAgICAgICB3aWR0aCA9IHdpZHRoQ29uc3RyYWludC0+dmFsdWVGb3JDYXBh
YmlsaXR5UmFuZ2Uoc2l6ZSgpLndpZHRoKCksICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0zMzIsMTYgKzMzMiwxNiBAQCBib29sIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3
aWR0aAogICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c0hl
aWdodCgpKSB7CiAgICAgICAgIGRvdWJsZSBjb25zdHJhaW50RGlzdGFuY2UgPSBmaXRuZXNzRGlz
dGFuY2UoKmhlaWdodENvbnN0cmFpbnQpOwogICAgICAgICBpZiAoc3RkOjppc2luZihjb25zdHJh
aW50RGlzdGFuY2UpKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhl
aWdodCgpOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWFsdGltZU1lZGlhU291cmNlOjpz
dXBwb3J0c1NpemVBbmRGcmFtZVJhdGUgZmFpbGVkIGhlaWdodCBjb25zdHJhaW50LCBjYXBhYmls
aXRpZXMgYXJlIFslZCwgJWRdIiwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VN
YXgoKS5hc0ludCk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdo
dCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlJlYWx0aW1lTWVk
aWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSBmYWlsZWQgaGVpZ2h0IGNvbnN0cmFp
bnQsIGNhcGFiaWxpdGllcyBhcmUgWyVkLCAlZF0iLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsK
ICAgICAgICAgICAgIGJhZENvbnN0cmFpbnQgPSBoZWlnaHRDb25zdHJhaW50LT5uYW1lKCk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBkaXN0YW5jZSA9
IHN0ZDo6bWluKGRpc3RhbmNlLCBjb25zdHJhaW50RGlzdGFuY2UpOwogICAgICAgICBpZiAoaGVp
Z2h0Q29uc3RyYWludC0+aXNNYW5kYXRvcnkoKSkgewotICAgICAgICAgICAgYXV0byByYW5nZSA9
IGNhcGFiaWxpdGllcy5oZWlnaHQoKTsKLSAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodENvbnN0
cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS5oZWlnaHQoKSwgcmFuZ2UucmFu
Z2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgICAgICBhdXRv
IHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAg
ICBoZWlnaHQgPSBoZWlnaHRDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShzaXpl
KCkuaGVpZ2h0KCksICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0zNDksMTYgKzM0OSwxNiBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogICAgIGlmIChm
cmFtZVJhdGVDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c0ZyYW1lUmF0ZSgpKSB7
CiAgICAgICAgIGRvdWJsZSBjb25zdHJhaW50RGlzdGFuY2UgPSBmaXRuZXNzRGlzdGFuY2UoKmZy
YW1lUmF0ZUNvbnN0cmFpbnQpOwogICAgICAgICBpZiAoc3RkOjppc2luZihjb25zdHJhaW50RGlz
dGFuY2UpKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0
ZSgpOwotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0c1NpemVBbmRGcmFtZVJhdGUgZmFpbGVkIGZyYW1lIHJhdGUgY29uc3RyYWludCwgY2FwYWJp
bGl0aWVzIGFyZSBbJWQsICVkXSIsIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdl
TWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFt
ZVJhdGUoKS5hc0RvdWJsZVJhbmdlKCk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZSBmYWlsZWQgZnJhbWUgcmF0
ZSBjb25zdHJhaW50LCBjYXBhYmlsaXRpZXMgYXJlIFslYSwgJWFdIiwgKnJhbmdlLm1pbiwgKnJh
bmdlLm1heCk7CiAgICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gZnJhbWVSYXRlQ29uc3RyYWlu
dC0+bmFtZSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAg
ICAgZGlzdGFuY2UgPSBzdGQ6Om1pbihkaXN0YW5jZSwgY29uc3RyYWludERpc3RhbmNlKTsKICAg
ICAgICAgaWYgKGZyYW1lUmF0ZUNvbnN0cmFpbnQtPmlzTWFuZGF0b3J5KCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCk7Ci0gICAgICAgICAgICBm
cmFtZVJhdGUgPSBmcmFtZVJhdGVDb25zdHJhaW50LT52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZSh0
aGlzLT5mcmFtZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VN
YXgoKS5hc0RvdWJsZSk7CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZy
YW1lUmF0ZSgpLmFzRG91YmxlUmFuZ2UoKTsKKyAgICAgICAgICAgIGZyYW1lUmF0ZSA9IGZyYW1l
UmF0ZUNvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHRoaXMtPmZyYW1lUmF0ZSgp
LCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzkwLDgg
KzM5MCw4IEBAIGRvdWJsZSBSZWFsdGltZU1lZGlhU291cmNlOjpmaXRuZXNzRGlzdGFuY2UoY29u
c3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGll
cy5zdXBwb3J0c1dpZHRoKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBhdXRv
IHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxJ
bnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UocmFuZ2UucmFuZ2VNaW4o
KS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBj
YXBhYmlsaXRpZXMud2lkdGgoKS5hc0xvbmdSYW5nZSgpOworICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKCpyYW5nZS5taW4s
ICpyYW5nZS5tYXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQwMCw4ICs0MDAsOCBA
QCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlh
Q29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9y
dHNIZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGF1dG8gcmFuZ2Ug
PSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25z
dHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5hc0lu
dCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmls
aXRpZXMuaGVpZ2h0KCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PElu
dENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqcmFuZ2UubWluLCAqcmFu
Z2UubWF4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00MTAsOCArNDEwLDggQEAgZG91
YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0
cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJh
bWVSYXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBhdXRvIHJhbmdlID0g
Y2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG91Ymxl
Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCku
YXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUpOworICAgICAgICBhdXRvIHJhbmdl
ID0gY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSgpLmFzRG91YmxlUmFuZ2UoKTsKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5j
ZSgqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00
MjAsOCArNDIwLDggQEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5j
ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJp
bGl0aWVzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8oKTsKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0
YW5jZShyYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91Ymxl
KTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5hc3BlY3RSYXRpbygpLmFzRG91
YmxlUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNv
bnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC00MzAsOCArNDMwLDggQEAgZG91YmxlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFp
bnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzVm9sdW1lKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKIAotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnZvbHVt
ZSgpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWlu
dCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdl
TWF4KCkuYXNEb3VibGUpOworICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnZvbHVt
ZSgpLmFzRG91YmxlUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvdWJsZUNvbnN0
cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqcmFuZ2UubWluLCAqcmFuZ2UubWF4
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00NDMsOCArNDQzLDggQEAgZG91YmxlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGNvbnN0cmFpbnQpCiAgICAgICAgIGlmIChhdXRvIGRpc2NyZXRlUmF0ZXMgPSBkaXNjcmV0ZVNh
bXBsZVJhdGVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4o
Y29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKCpkaXNjcmV0ZVJhdGVzKTsKIAotICAgICAgICBh
dXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnNhbXBsZVJhdGUoKTsKLSAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZShyYW5nZS5y
YW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50KTsKKyAgICAgICAgYXV0byBy
YW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5j
ZSgqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00
NTYsOCArNDU2LDggQEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5j
ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmIChhdXRvIGRp
c2NyZXRlU2l6ZXMgPSBkaXNjcmV0ZVNhbXBsZVNpemVzKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKCpkaXNj
cmV0ZVNpemVzKTsKIAotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnNhbXBsZVNp
emUoKTsKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQp
LmZpdG5lc3NEaXN0YW5jZShyYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgp
LmFzSW50KTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCku
YXNMb25nUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNv
bnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC01NjEsOCArNTYxLDggQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjphcHBseUNvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50
KQogICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5zdXBwb3J0c0FzcGVjdFJhdGlvKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5hc3Bl
Y3RSYXRpbygpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PERvdWJs
ZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBhc3BlY3RSYXRpbygpLCB7IH0sIHJhbmdlLnJhbmdl
TWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsICp0aGlzLCAmUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8pOworICAgICAgICBhdXRvIHJhbmdlID0gY2Fw
YWJpbGl0aWVzLmFzcGVjdFJhdGlvKCkuYXNEb3VibGVSYW5nZSgpOworICAgICAgICBhcHBseU51
bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBh
c3BlY3RSYXRpbygpLCB7IH0sICpyYW5nZS5taW4sICpyYW5nZS5tYXgsICp0aGlzLCAmUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8pOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTU3MSw4ICs1NzEsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2Fw
YWJpbGl0aWVzLnN1cHBvcnRzVm9sdW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy52b2x1bWUoKTsKLSAgICAgICAgYXBwbHlOdW1l
cmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgdm9s
dW1lKCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0RvdWJsZSwgKnRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRWb2x1bWUpOworICAgICAg
ICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnZvbHVtZSgpLmFzRG91YmxlUmFuZ2UoKTsKKyAg
ICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihj
b25zdHJhaW50KSwgdm9sdW1lKCksIHsgfSwgKnJhbmdlLm1pbiwgKnJhbmdlLm1heCwgKnRoaXMs
ICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRWb2x1bWUpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTU4MSw4ICs1ODEsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICgh
Y2FwYWJpbGl0aWVzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpOwotICAgICAg
ICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFp
bnQpLCBzYW1wbGVSYXRlKCksIGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSwgcmFuZ2UucmFuZ2VNaW4o
KS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgKnRoaXMsICZSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRTYW1wbGVSYXRlKTsKKyAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5z
YW1wbGVSYXRlKCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWlu
dChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KSwgc2FtcGxlUmF0ZSgpLCBkaXNj
cmV0ZVNhbXBsZVJhdGVzKCksICpyYW5nZS5taW4sICpyYW5nZS5tYXgsICp0aGlzLCAmUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA
QCAtNTkxLDggKzU5MSw4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJh
aW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgaWYgKCFjYXBh
YmlsaXRpZXMuc3VwcG9ydHNTYW1wbGVTaXplKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7Ci0gICAgICAgIGFw
cGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCks
IHNhbXBsZVNpemUoKSwgeyB9LCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1h
eCgpLmFzSW50LCAqdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUpOwor
ICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnNhbXBsZVNpemUoKS5hc0xvbmdSYW5n
ZSgpOworICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFp
bnQ+KGNvbnN0cmFpbnQpLCBzYW1wbGVTaXplKCksIHsgfSwgKnJhbmdlLm1pbiwgKnJhbmdlLm1h
eCwgKnRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkBAIC04OTUsOCArODk1LDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFp
bnQKICAgICBpZiAoY29uc3QgTWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3RyYWlu
dHMuZmluZChNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkpIHsKICAgICAgICAgQVNTRVJUKGNv
bnN0cmFpbnQtPmlzSW50KCkpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzV2lk
dGgoKSkgewotICAgICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwot
ICAgICAgICAgICAgd2lkdGggPSBkb3duY2FzdDxJbnRDb25zdHJhaW50PigqY29uc3RyYWludCku
dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgpLndpZHRoKCksIHJhbmdlLnJhbmdlTWluKCku
YXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOworICAgICAgICAgICAgYXV0byByYW5nZSA9
IGNhcGFiaWxpdGllcy53aWR0aCgpLmFzTG9uZ1JhbmdlKCk7CisgICAgICAgICAgICB3aWR0aCA9
IGRvd25jYXN0PEludENvbnN0cmFpbnQ+KCpjb25zdHJhaW50KS52YWx1ZUZvckNhcGFiaWxpdHlS
YW5nZShzaXplKCkud2lkdGgoKSwgKnJhbmdlLm1pbiwgKnJhbmdlLm1heCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTkwNCw4ICs5MDQsOCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFw
cGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWludAogICAg
IGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQqIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50cy5maW5k
KE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCkpIHsKICAgICAgICAgQVNTRVJUKGNvbnN0cmFp
bnQtPmlzSW50KCkpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRzSGVpZ2h0KCkp
IHsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0KCk7Ci0gICAg
ICAgICAgICBoZWlnaHQgPSBkb3duY2FzdDxJbnRDb25zdHJhaW50PigqY29uc3RyYWludCkudmFs
dWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgpLmhlaWdodCgpLCByYW5nZS5yYW5nZU1pbigpLmFz
SW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50KTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBj
YXBhYmlsaXRpZXMuaGVpZ2h0KCkuYXNMb25nUmFuZ2UoKTsKKyAgICAgICAgICAgIGhlaWdodCA9
IGRvd25jYXN0PEludENvbnN0cmFpbnQ+KCpjb25zdHJhaW50KS52YWx1ZUZvckNhcGFiaWxpdHlS
YW5nZShzaXplKCkuaGVpZ2h0KCksICpyYW5nZS5taW4sICpyYW5nZS5tYXgpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC05MTMsOCArOTEzLDggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjph
cHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFpbnQKICAg
ICBpZiAoY29uc3QgTWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3RyYWludHMuZmlu
ZChNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGUpKSB7CiAgICAgICAgIEFTU0VSVChjb25z
dHJhaW50LT5pc0RvdWJsZSgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0Zy
YW1lUmF0ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmZyYW1l
UmF0ZSgpOwotICAgICAgICAgICAgZnJhbWVSYXRlID0gZG93bmNhc3Q8RG91YmxlQ29uc3RyYWlu
dD4oKmNvbnN0cmFpbnQpLnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHRoaXMtPmZyYW1lUmF0ZSgp
LCByYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlKTsK
KyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCkuYXNEb3Vi
bGVSYW5nZSgpOworICAgICAgICAgICAgZnJhbWVSYXRlID0gZG93bmNhc3Q8RG91YmxlQ29uc3Ry
YWludD4oKmNvbnN0cmFpbnQpLnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHRoaXMtPmZyYW1lUmF0
ZSgpLCAqcmFuZ2UubWluLCAqcmFuZ2UubWF4KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjE2ZjNi
ODhiMWUyZTY0ZTBiZGFkOTdhNTg3NjhmMjc5MzQ1MTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkNvcmU6OkRvdWJsZVJhbmdlIENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2U6OmFzRG91YmxlUmFuZ2UoKSBjb25zdAoreworICAgIFdlYkNvcmU6OkRvdWJs
ZVJhbmdlIHJhbmdlOworICAgIHN3aXRjaE9uKG1fdmFsdWUsCisgICAgICAgIFsmXSAoQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlIHZhbHVlKSB7CisgICAgICAgICAgICByYW5nZS5taW4g
PSB2YWx1ZTsKKyAgICAgICAgICAgIHJhbmdlLm1heCA9IHZhbHVlOworICAgICAgICB9LAorICAg
ICAgICBbJl0gKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlJiB2YWx1
ZSkgeworICAgICAgICAgICAgYXV0byBbbWluLCBtYXhdID0gdmFsdWU7CisgICAgICAgICAgICBy
YW5nZS5taW4gPSBtaW47CisgICAgICAgICAgICByYW5nZS5tYXggPSBtYXg7CisgICAgICAgIH0s
CisgICAgICAgIFsmXSAoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6TG9uZykgeworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3Qg
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6TG9uZ1JhbmdlJikgeworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICApOworICAgIHJldHVybiByYW5nZTsKK30K
KworV2ViQ29yZTo6TG9uZ1JhbmdlIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmFzTG9uZ1Jhbmdl
KCkgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpMb25nUmFuZ2UgcmFuZ2U7CisgICAgc3dpdGNoT24o
bV92YWx1ZSwKKyAgICAgICAgWyZdIChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGUpIHsK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9LAorICAgICAgICBb
Jl0gKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlJikgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZTo6TG9uZyB2YWx1ZSkgeworICAgICAgICAgICAgcmFuZ2UubWlu
ID0gdmFsdWU7CisgICAgICAgICAgICByYW5nZS5tYXggPSB2YWx1ZTsKKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpMb25nUmFuZ2UmIHZhbHVl
KSB7CisgICAgICAgICAgICBhdXRvIFttaW4sIG1heF0gPSB2YWx1ZTsKKyAgICAgICAgICAgIHJh
bmdlLm1pbiA9IG1pbjsKKyAgICAgICAgICAgIHJhbmdlLm1heCA9IG1heDsKKyAgICAgICAgfQor
ICAgICk7CisgICAgcmV0dXJuIHJhbmdlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcy5oCmluZGV4IDI0MGZkNDk2NzJiY2U4MzY3ZWE3MjI5YTU2ZDdhNGU3Yzhl
ZjZiYWIuLmU5MWUxYjQzOTQ5ZjhkMTI5NjZlYWExN2VmYTg2ZjYyNTk4Y2NhM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMCArMjcsMTMgQEAK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJEb3VibGVSYW5nZS5oIgor
I2luY2x1ZGUgIkxvbmdSYW5nZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAKQEAgLTM4LDk1ICs0MSw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgewogcHVibGljOgotCi0gICAgZW51bSBUeXBl
IHsKLSAgICAgICAgVW5kZWZpbmVkLAotICAgICAgICBEb3VibGUsCi0gICAgICAgIFVMb25nLAot
ICAgICAgICBEb3VibGVSYW5nZSwKLSAgICAgICAgVUxvbmdSYW5nZSwKLSAgICB9OwotICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgdW5pb24gVmFsdWVVbmlv
biB7Ci0gICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKLSAgICAgICAgaW50IGFzSW50OwotICAgIH07
Ci0KLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKCkKLSAgICAgICAgOiBtX3R5cGUoVW5kZWZp
bmVkKQorICAgIHVzaW5nIExvbmcgPSBpbnQ7CisgICAgdXNpbmcgRG91YmxlID0gZG91YmxlOwor
ICAgIHVzaW5nIExvbmdSYW5nZSA9IHN0ZDo6cGFpcjxpbnQsIGludD47CisgICAgdXNpbmcgRG91
YmxlUmFuZ2UgPSBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+OworICAgIHVzaW5nIFZhbHVlT3JS
YW5nZSA9IFdURjo6VmFyaWFudDxMb25nLCBMb25nUmFuZ2UsIERvdWJsZSwgRG91YmxlUmFuZ2U+
OworCisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgpID0gZGVsZXRlOworICAgIGV4cGxpY2l0
IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoTG9uZyB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKSB7IH0KKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKExvbmdSYW5nZSB2YWx1ZSkKKyAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlKSB7IH0KKyAgICBleHBsaWNpdCBDYXBhYmlsaXR5VmFsdWVP
clJhbmdlKERvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKSB7IH0KKyAgICBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlKERvdWJsZVJhbmdlIHZhbHVlKQorICAgICAgICA6IG1fdmFs
dWUodmFsdWUpIHsgfQorICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoVmFsdWVPclJhbmdlJiYg
dmFsdWUpCisgICAgICAgIDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkgeyB9CisKKyAgICBXZWJD
b3JlOjpEb3VibGVSYW5nZSBhc0RvdWJsZVJhbmdlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6TG9u
Z1JhbmdlIGFzTG9uZ1JhbmdlKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKKyAgICAgICAgZW5j
b2RlciA8PCBtX3ZhbHVlOwogICAgIH0KIAotICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoZG91
YmxlIHZhbHVlKQotICAgICAgICA6IG1fdHlwZShEb3VibGUpCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U+IGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgbV9taW5PclZhbHVlLmFzRG91YmxlID0g
dmFsdWU7CisgICAgICAgIE9wdGlvbmFsPFZhbHVlT3JSYW5nZT4gdmFsdWU7CisgICAgICAgIGRl
Y29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgICAgIGRlY29k
ZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoV1RGTW92ZSgqdmFs
dWUpKTsKICAgICB9CiAKLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKGludCB2YWx1ZSkKLSAg
ICAgICAgOiBtX3R5cGUoVUxvbmcpCi0gICAgewotICAgICAgICBtX21pbk9yVmFsdWUuYXNJbnQg
PSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlKGRvdWJsZSBtaW4s
IGRvdWJsZSBtYXgpCi0gICAgICAgIDogbV90eXBlKERvdWJsZVJhbmdlKQotICAgIHsKLSAgICAg
ICAgbV9taW5PclZhbHVlLmFzRG91YmxlID0gbWluOwotICAgICAgICBtX21heC5hc0RvdWJsZSA9
IG1heDsKLSAgICB9Ci0gICAgCi0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShpbnQgbWluLCBp
bnQgbWF4KQotICAgICAgICA6IG1fdHlwZShVTG9uZ1JhbmdlKQotICAgIHsKLSAgICAgICAgbV9t
aW5PclZhbHVlLmFzSW50ID0gbWluOwotICAgICAgICBtX21heC5hc0ludCA9IG1heDsKLSAgICB9
Ci0KLSAgICBjb25zdCBWYWx1ZVVuaW9uJiByYW5nZU1pbigpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IERvdWJsZVJhbmdlIHx8IG1fdHlwZSA9PSBVTG9uZ1JhbmdlKTsK
LSAgICAgICAgcmV0dXJuIG1fbWluT3JWYWx1ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBWYWx1ZVVu
aW9uJiByYW5nZU1heCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IERv
dWJsZVJhbmdlIHx8IG1fdHlwZSA9PSBVTG9uZ1JhbmdlKTsKLSAgICAgICAgcmV0dXJuIG1fbWF4
OwotICAgIH0KLQotICAgIGNvbnN0IFZhbHVlVW5pb24mIHZhbHVlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRG91YmxlIHx8IG1fdHlwZSA9PSBVTG9uZyk7Ci0gICAg
ICAgIHJldHVybiBtX21pbk9yVmFsdWU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIENh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2UmKTsKLQogcHJpdmF0ZToKLSAgICBWYWx1ZVVuaW9uIG1fbWlu
T3JWYWx1ZSB7IH07Ci0gICAgVmFsdWVVbmlvbiBtX21heCB7IH07Ci0gICAgVHlwZSBtX3R5cGUg
eyBVbmRlZmluZWQgfTsKKyAgICBWYWx1ZU9yUmFuZ2UgbV92YWx1ZTsKIH07CiAKLXRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Ci12b2lkIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZtX21pbk9yVmFsdWUpLCBzaXplb2Yo
VmFsdWVVbmlvbiksIGFsaWdub2YoVmFsdWVVbmlvbikpOwotICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZtX21heCksIHNp
emVvZihWYWx1ZVVuaW9uKSwgYWxpZ25vZihWYWx1ZVVuaW9uKSk7Ci0gICAgZW5jb2RlciA8PCBt
X3R5cGU7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
JiB2YWx1ZU9yUmFuZ2UpCi17Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZU9yUmFuZ2UubV9taW5PclZhbHVl
KSwgc2l6ZW9mKFZhbHVlVW5pb24pLCBhbGlnbm9mKFZhbHVlVW5pb24pKQotICAgICAgICAmJiBk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigm
dmFsdWVPclJhbmdlLm1fbWF4KSwgc2l6ZW9mKFZhbHVlVW5pb24pLCBhbGlnbm9mKFZhbHVlVW5p
b24pKQotICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSh2YWx1ZU9yUmFuZ2UubV90eXBlKTsKLX0K
LQogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyB7CiBwdWJsaWM6CiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcygpID0gZGVmYXVsdDsKQEAgLTE0NCwzNiAr
OTksMzYgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc3VwcG9ydHNXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNXaWR0aCgpOyB9Ci0gICAg
Y29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoOyB9Ci0gICAgdm9pZCBzZXRXaWR0aChjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB3
aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJh
bmdlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuICptX3dpZHRoOyB9CisgICAgdm9pZCBzZXRXaWR0
aChjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB3aWR0aCkgeyBtX3dpZHRoID0gbWFrZU9w
dGlvbmFsKHdpZHRoKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c0hlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNIZWlnaHQoKTsgfQotICAgIGNvbnN0
IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0
OyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgaGVp
Z2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gKm1faGVpZ2h0OyB9CisgICAgdm9pZCBzZXRI
ZWlnaHQoY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgaGVpZ2h0KSB7IG1faGVpZ2h0ID0g
bWFrZU9wdGlvbmFsKGhlaWdodCk7IH0KIAogICAgIGJvb2wgc3VwcG9ydHNGcmFtZVJhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRnJhbWVSYXRlKCk7
IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBmcmFtZVJhdGUoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQotICAgIHZvaWQgc2V0RnJhbWVSYXRlKGNvbnN0IENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UmIGZyYW1lUmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsg
fQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGZyYW1lUmF0ZSgpIGNvbnN0IHsg
cmV0dXJuICptX2ZyYW1lUmF0ZTsgfQorICAgIHZvaWQgc2V0RnJhbWVSYXRlKGNvbnN0IENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UmIGZyYW1lUmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IG1ha2VPcHRpb25h
bChmcmFtZVJhdGUpOyB9CiAKICAgICBib29sIHN1cHBvcnRzRmFjaW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNGYWNpbmdNb2RlKCk7IH0KICAg
ICBjb25zdCBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01v
ZGU+JiBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9CiAgICAgdm9p
ZCBhZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlIG1vZGUpIHsgbV9mYWNpbmdNb2RlLmFwcGVuZChtb2RlKTsgfQogCiAgICAgYm9vbCBzdXBw
b3J0c0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c0FzcGVjdFJhdGlvKCk7IH0KLSAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
JiBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXNwZWN0UmF0aW87IH0KLSAgICB2b2lk
IHNldEFzcGVjdFJhdGlvKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGFzcGVjdFJhdGlv
KSB7IG1fYXNwZWN0UmF0aW8gPSBhc3BlY3RSYXRpbzsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlW
YWx1ZU9yUmFuZ2UmIGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gKm1fYXNwZWN0UmF0aW87
IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2Um
IGFzcGVjdFJhdGlvKSB7IG1fYXNwZWN0UmF0aW8gPSBtYWtlT3B0aW9uYWwoYXNwZWN0UmF0aW8p
OyB9CiAKICAgICBib29sIHN1cHBvcnRzVm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0
ZWRDb25zdHJhaW50cy5zdXBwb3J0c1ZvbHVtZSgpOyB9Ci0gICAgY29uc3QgQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSYgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KLSAgICB2b2lk
IHNldFZvbHVtZShjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUpIHsgbV92b2x1
bWUgPSB2b2x1bWU7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUo
KSBjb25zdCB7IHJldHVybiAqbV92b2x1bWU7IH0KKyAgICB2b2lkIHNldFZvbHVtZShjb25zdCBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUpIHsgbV92b2x1bWUgPSBtYWtlT3B0aW9uYWwo
dm9sdW1lKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVy
biBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpOyB9Ci0gICAgY29u
c3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2FtcGxlUmF0ZTsgfQotICAgIHZvaWQgc2V0U2FtcGxlUmF0ZShjb25zdCBDYXBhYmlsaXR5VmFs
dWVPclJhbmdlJiBzYW1wbGVSYXRlKSB7IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KKyAg
ICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gKm1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxlUmF0ZShjb25zdCBDYXBhYmls
aXR5VmFsdWVPclJhbmdlJiBzYW1wbGVSYXRlKSB7IG1fc2FtcGxlUmF0ZSA9IG1ha2VPcHRpb25h
bChzYW1wbGVSYXRlKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpOyB9Ci0g
ICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgc2FtcGxlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlU2l6ZTsgfQotICAgIHZvaWQgc2V0U2FtcGxlU2l6ZShjb25zdCBDYXBhYmls
aXR5VmFsdWVPclJhbmdlJiBzYW1wbGVTaXplKSB7IG1fc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7
IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBzYW1wbGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gKm1fc2FtcGxlU2l6ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxlU2l6ZShjb25zdCBD
YXBhYmlsaXR5VmFsdWVPclJhbmdlJiBzYW1wbGVTaXplKSB7IG1fc2FtcGxlU2l6ZSA9IG1ha2VP
cHRpb25hbChzYW1wbGVTaXplKTsgfQogCiAgICAgZW51bSBjbGFzcyBFY2hvQ2FuY2VsbGF0aW9u
IDogYm9vbCB7CiAgICAgICAgIFJlYWRPbmx5ID0gMCwKQEAgLTE5OCwxNCArMTUzLDE0IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
Jik7CiAKIHByaXZhdGU6Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX3dpZHRoOwotICAg
IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgbV9oZWlnaHQ7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSBtX2FzcGVjdFJhdGlvOwotICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgbV9mcmFtZVJh
dGU7CisgICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gbV93aWR0aDsKKyAgICBP
cHRpb25hbDxDYXBhYmlsaXR5VmFsdWVPclJhbmdlPiBtX2hlaWdodDsKKyAgICBPcHRpb25hbDxD
YXBhYmlsaXR5VmFsdWVPclJhbmdlPiBtX2FzcGVjdFJhdGlvOworICAgIE9wdGlvbmFsPENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2U+IG1fZnJhbWVSYXRlOwogICAgIFZlY3RvcjxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZT4gbV9mYWNpbmdNb2RlOwotICAgIENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UgbV92b2x1bWU7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBt
X3NhbXBsZVJhdGU7Ci0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX3NhbXBsZVNpemU7Cisg
ICAgT3B0aW9uYWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gbV92b2x1bWU7CisgICAgT3B0aW9u
YWw8Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZT4gbV9zYW1wbGVSYXRlOworICAgIE9wdGlvbmFsPENh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2U+IG1fc2FtcGxlU2l6ZTsKICAgICBFY2hvQ2FuY2VsbGF0aW9u
IG1fZWNob0NhbmNlbGxhdGlvbiB7IEVjaG9DYW5jZWxsYXRpb246OlJlYWRPbmx5IH07CiAgICAg
QXRvbVN0cmluZyBtX2RldmljZUlkOwogICAgIEF0b21TdHJpbmcgbV9ncm91cElkOwpAQCAtMjI0
LDEwICsxNzksMTAgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgPDwgbV92b2x1bWUKICAgICAgICAg
PDwgbV9zYW1wbGVSYXRlCiAgICAgICAgIDw8IG1fc2FtcGxlU2l6ZQorICAgICAgICA8PCBtX2Vj
aG9DYW5jZWxsYXRpb24KICAgICAgICAgPDwgbV9kZXZpY2VJZAogICAgICAgICA8PCBtX2dyb3Vw
SWQKLSAgICAgICAgPDwgbV9zdXBwb3J0ZWRDb25zdHJhaW50cwotICAgICAgICA8PCBtX2VjaG9D
YW5jZWxsYXRpb247CisgICAgICAgIDw8IG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0yNDEsMjcgKzE5NiwxMiBAQCBib29sIFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZWFsdGlt
ZU1lZGlhU291cgogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShjYXBhYmlsaXRpZXMubV92b2x1
bWUpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX3NhbXBsZVJhdGUp
CiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX3NhbXBsZVNpemUpCisg
ICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX2VjaG9DYW5jZWxsYXRpb24p
CiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX2RldmljZUlkKQogICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZShjYXBhYmlsaXRpZXMubV9ncm91cElkKQotICAgICAgICAm
JiBkZWNvZGVyLmRlY29kZShjYXBhYmlsaXRpZXMubV9zdXBwb3J0ZWRDb25zdHJhaW50cykKLSAg
ICAgICAgJiYgZGVjb2Rlci5kZWNvZGUoY2FwYWJpbGl0aWVzLm1fZWNob0NhbmNlbGxhdGlvbik7
CisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKGNhcGFiaWxpdGllcy5tX3N1cHBvcnRlZENvbnN0
cmFpbnRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgV1RGIHsK
LQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDYXBhYmlsaXR5VmFsdWVP
clJhbmdlOjpUeXBlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAg
V2ViQ29yZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZSwKLSAgICAgICAgV2ViQ29yZTo6
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZTo6VW5kZWZpbmVkLAotICAgICAgICBXZWJDb3Jl
OjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpUeXBlOjpEb3VibGUsCi0gICAgICAgIFdlYkNvcmU6
OkNhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlR5cGU6OlVMb25nLAotICAgICAgICBXZWJDb3JlOjpD
YXBhYmlsaXR5VmFsdWVPclJhbmdlOjpUeXBlOjpEb3VibGVSYW5nZSwKLSAgICAgICAgV2ViQ29y
ZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VHlwZTo6VUxvbmdSYW5nZQotICAgID47Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXVEYKLQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZp
ZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggYjI2OGIyYjU1MjdkZmUyNTJl
NjFlZjRlMmU4ZjMwNmE5NzNiNzEwMy4uZGE5ZTQ2YzZjMWYxZThhYWM2N2M0NTk5YjQ2ZWRjMDUy
NjRiMjdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4Miwx
MCArMTgyLDEwIEBAIHZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZUNhcGFi
aWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0CiAgICAgICAgIG1heGltdW1Bc3Bl
Y3RSYXRpbyA9IG1heGltdW1XaWR0aDsKICAgICB9CiAKLSAgICBjYXBhYmlsaXRpZXMuc2V0V2lk
dGgoeyBtaW5pbXVtV2lkdGgsIG1heGltdW1XaWR0aCB9KTsKLSAgICBjYXBhYmlsaXRpZXMuc2V0
SGVpZ2h0KHsgbWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCB9KTsKLSAgICBjYXBhYmlsaXRp
ZXMuc2V0QXNwZWN0UmF0aW8oeyBtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RSYXRp
byB9KTsKLSAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlKHsgbWluaW11bUZyYW1lUmF0ZSwg
bWF4aW11bUZyYW1lUmF0ZSB9KTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6TG9uZ1JhbmdlIHsgbWluaW11bVdpZHRoLCBtYXhpbXVtV2lkdGggfSk7
CisgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpMb25n
UmFuZ2UgeyBtaW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0IH0pOworICAgIGNhcGFiaWxpdGll
cy5zZXRBc3BlY3RSYXRpbyhDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZSB7IG1p
bmltdW1Bc3BlY3RSYXRpbywgbWF4aW11bUFzcGVjdFJhdGlvIH0pOworICAgIGNhcGFiaWxpdGll
cy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgeyBtaW5p
bXVtRnJhbWVSYXRlLCBtYXhpbXVtRnJhbWVSYXRlIH0pOwogfQogCiBib29sIFJlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3
aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcApp
bmRleCA0NTZlZjA2NzA2YmI2YTI1ODI4MWUxZTM4MjQwMWNjMDJiYzc4MGI5Li4xMGJiNjEwNGY3
YWI2NTE5OTY4Njg5ZDY2M2VmYzNmMDZhZTEyODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIGRlZmF1bHRW
b2x1bWVDYXBhYmlsaXR5KCkKIHsKLSAgICByZXR1cm4gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgw
LjAsIDEuMCk7CisgICAgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdl
IHsgMC4wLCAxLjAgfTsKIH0KIGNvbnN0IHN0YXRpYyBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjpFY2hvQ2FuY2VsbGF0aW9uIGRlZmF1bHRFY2hvQ2FuY2VsbGF0aW9uQ2FwYWJpbGl0
eSA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OkVjaG9DYW5jZWxsYXRpb246OlJl
YWRXcml0ZTsKIApAQCAtMTczLDcgKzE3Myw3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMmIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzCiAg
ICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hlZElkKCkpOwogICAgIGNhcGFiaWxpdGll
cy5zZXRFY2hvQ2FuY2VsbGF0aW9uKGRlZmF1bHRFY2hvQ2FuY2VsbGF0aW9uQ2FwYWJpbGl0eSk7
CiAgICAgY2FwYWJpbGl0aWVzLnNldFZvbHVtZShkZWZhdWx0Vm9sdW1lQ2FwYWJpbGl0eSgpKTsK
LSAgICBjYXBhYmlsaXRpZXMuc2V0U2FtcGxlUmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKG1p
blNhbXBsZVJhdGUsIG1heFNhbXBsZVJhdGUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0U2FtcGxl
UmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpMb25nUmFuZ2UgeyBtaW5TYW1wbGVSYXRlLCBt
YXhTYW1wbGVSYXRlIH0pOwogICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRp
ZXMpOwogCiAgICAgcmV0dXJuIG1fY2FwYWJpbGl0aWVzLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNGJjZDUzOTBlNWExMmM1YTY4YWU0YzAzMjA2MTAx
NWQ4YWFiNzVkOC4uNzQ0OTM0MGY0MmJlNGNjMzI0M2M2ZTA3YWQzYzBkMmNmNTdiZWJiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRp
b0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDcgKzgxLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgc2l6ZV90IHByZWZlcnJlZElPQnVmZmVyU2l6ZSgp
OwogCi0gICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBzYW1wbGVSYXRlQ2FwYWNpdGllcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoODAwMCwgOTYwMDApOyB9
CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBzYW1wbGVSYXRlQ2FwYWNpdGllcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkxvbmdSYW5nZSB7IDgwMDAs
IDk2MDAwIH07IH0KICAgICBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG1pY3JvcGhv
bmVGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX21pY3JvcGhvbmVQcm9jRm9ybWF0OyB9CiAKICAg
ICBib29sIGhhc0F1ZGlvVW5pdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW9Vbml0OyB9CkBA
IC03NTgsNyArNzU4LDcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYg
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKICAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRD
b25zdHJhaW50cygpKTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hlZElk
KCkpOwogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RWNob0NhbmNlbGxhdGlvbihSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpFY2hvQ2FuY2VsbGF0aW9uOjpSZWFkV3JpdGUpOwotICAg
ICAgICBjYXBhYmlsaXRpZXMuc2V0Vm9sdW1lKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMC4wLCAx
LjApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFZvbHVtZShDYXBhYmlsaXR5VmFsdWVPclJh
bmdlOjpEb3VibGVSYW5nZSB7IDAuMCwgMS4wIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuc2V0
U2FtcGxlUmF0ZSh1bml0KCkuc2FtcGxlUmF0ZUNhcGFjaXRpZXMoKSk7CiAgICAgICAgIG1fY2Fw
YWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCAzZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRk
MjJhOTdjNTEzODcwNjYzLi45ZTk0MWMyY2YzNzc5YTY3MDJhNGE5YjQzOTJkMjdhOTQ0MTE0MGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1LDkg
KzExNSw5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmNhcGFiaWxpdGllcygpCiAgICAgICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3Ry
YWludHMoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHRoZXNlIGJlPwotICAg
ICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAzODQw
KSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSgxLCAyMTYwKSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSguMDEsIDMwLjApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRo
KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkxvbmdSYW5nZSB7IDEsIDM4NDAgfSk7CisgICAgICAg
IGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6TG9uZ1Jhbmdl
IHsgMSwgMjE2MCB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmls
aXR5VmFsdWVPclJhbmdlOjpEb3VibGVSYW5nZSB7IC4wMSwgMzAuMCB9KTsKIAogICAgICAgICBt
X2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVk
VW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRp
b1NoYXJlZFVuaXQuaAppbmRleCA0MGEzYjJmMDI2OGM4YzcxZTE0NGM0ZGExY2Q2YjgzYTI4YTM1
OTJjLi44ZTJjNzRlMmUzODM5YzM1YmMzNDIyNmZjMmYxODVlYWFlMjQ3MzI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVk
VW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
QXVkaW9TaGFyZWRVbml0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGRlbGF5U2FtcGxlcyhTZWNvbmRzKSBmaW5hbDsKIAotICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2Ugc2FtcGxlUmF0ZUNhcGFjaXRpZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlKDQ0MTAwLCA0ODAwMCk7IH0KKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
IHNhbXBsZVJhdGVDYXBhY2l0aWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZTo6TG9uZ1JhbmdlIHsgNDQxMDAsIDQ4MDAwIH07IH0KIAogICAgIHZvaWQgdGlj
aygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UuY3BwCmluZGV4IDc1ZGI4ODA1ZjQ3OWYyNGIzMzExMzQ3NWFmZDlm
ZGRmZDRhNjRiZDEuLjU5M2MyMzM4MDI3OWU5ZWM2MDEzYTE1MmRiY2M3YjJjYTM5ZDVhOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTE5LDkgKzExOSw5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KQogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyhz
ZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogCiAgICAgICAgIGNhcGFiaWxpdGll
cy5zZXREZXZpY2VJZChoYXNoZWRJZCgpKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldFZvbHVt
ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDAuMCwgMS4wKSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5zZXRWb2x1bWUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgeyAwLjAsIDEu
MCB9KTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEVjaG9DYW5jZWxsYXRpb24oUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6RWNob0NhbmNlbGxhdGlvbjo6UmVhZFdyaXRlKTsKLSAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSg0
NDEwMCwgNDgwMDApKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFNhbXBsZVJhdGUoQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZTo6TG9uZ1JhbmdlIHsgNDQxMDAsIDQ4MDAwIH0pOwogCiAgICAgICAg
IG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKaW5kZXggZTQ4YzhjNjIzYWFmOTc2ZDFlYmZjMzgyMmQxZjhmNjk3MGIxYmVlYi4uMDZl
ODBhNmFmY2M4NWNiNzQ2YjUxZGZhNmRjY2U1MmYyNWZjN2ZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMzIsOSArMTMyLDkgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpCiAgICAgICAgICAgICB1
cGRhdGVDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKTsKICAgICAgICAgICAgIGNhcGFiaWxpdGll
cy5zZXREZXZpY2VJZChoYXNoZWRJZCgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDcyLCAyODgwKSk7
Ci0gICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0KENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UoNDUsIDE4MDApKTsKLSAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDYwLjApKTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGll
cy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpMb25nUmFuZ2UgeyA3MiwgMjg4MCB9
KTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZTo6TG9uZ1JhbmdlIHsgNDUsIDE4MDAgfSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMu
c2V0RnJhbWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OkRvdWJsZVJhbmdlIHsgLjAxLCA2
MC4wIH0pOwogICAgICAgICB9CiAKICAgICAgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKGNh
cGFiaWxpdGllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aAppbmRleCBiYjJiM2M0NjAxYzBlMzg3MmFjYzFhZTMzYzk1ODdjNDgyM2JmZDNlLi4wYzgwZTg3
MjZkNjNlNzc1NjNmZjZmM2QxNTk2ZTAzM2NjYWViMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTE1NywxNCArMTU3LDIxIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIFQgdmFsdWU7Ci0gICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiBjb25zdGV4cHIoSGFzTW9kZXJuRGVjb2RlclY8VD4pIHsKKyAgICAgICAgICAg
IG9wdGlvbmFsID0gVDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgcmV0dXJuIGRlY29k
ZXIuaXNWYWxpZCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVCB2YWx1ZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
b3B0aW9uYWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgIG9wdGlvbmFsID0gV1RGTW92ZSh2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAg
c3RhdGljIE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICB7CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRW5nYWdlZDsK
</data>
<flag name="review"
          id="445548"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>