<?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>229661</bug_id>
          
          <creation_ts>2021-08-29 19:57:52 -0700</creation_ts>
          <short_desc>[WebRTC] Leak or over-release of CFPixelBufferRef returned from webrtc::createPixelBufferFromFrame()</short_desc>
          <delta_ts>2021-11-10 12:56:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>229806</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</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>1788432</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-29 19:57:52 -0700</bug_when>
    <thetext>Leak or over-release of CFPixelBufferRef returned from webrtc::createPixelBufferFromFrame().

Found by the clang static analyzer:

OpenSource/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:177:9: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
        CFRelease(pixelBuffer);
        ^~~~~~~~~~~~~~~~~~~~~~
OpenSource/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:177:9: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
        CFRelease(pixelBuffer);
        ^~~~~~~~~~~~~~~~~~~~~~
OpenSource/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:177:9: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
        CFRelease(pixelBuffer);
        ^~~~~~~~~~~~~~~~~~~~~~
3 warnings generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788433</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-29 19:58:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/82507827&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788434</commentid>
    <comment_count>2</comment_count>
      <attachid>436754</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-29 20:04:13 -0700</bug_when>
    <thetext>Created attachment 436754
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788498</commentid>
    <comment_count>3</comment_count>
      <attachid>436771</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-30 07:49:12 -0700</bug_when>
    <thetext>Created attachment 436771
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788527</commentid>
    <comment_count>4</comment_count>
      <attachid>436778</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-30 09:17:27 -0700</bug_when>
    <thetext>Created attachment 436778
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788558</commentid>
    <comment_count>5</comment_count>
      <attachid>436790</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-30 10:21:56 -0700</bug_when>
    <thetext>Created attachment 436790
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788586</commentid>
    <comment_count>6</comment_count>
      <attachid>436790</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-30 11:26:39 -0700</bug_when>
    <thetext>Comment on attachment 436790
Patch v4

r=me once the bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788623</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-30 13:03:17 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #6)
&gt; Comment on attachment 436790 [details]
&gt; Patch v4
&gt; 
&gt; r=me once the bots are happy

Failures reproduce on macOS 12 Monterey as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788632</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-30 13:14:42 -0700</bug_when>
    <thetext>I am probably going to need help figuring out why these two tests are failing, and only on macOS.  There are a lot of moving parts I&apos;m not familiar with here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788684</commentid>
    <comment_count>9</comment_count>
      <attachid>436790</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-30 15:27:53 -0700</bug_when>
    <thetext>Comment on attachment 436790
Patch v4

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:434
&gt; -    RetainPtr&lt;CVPixelBufferRef&gt; newPixelBuffer;
&gt; -    auto pixelBuffer = webrtc::pixelBufferFromFrame(frame, [&amp;newPixelBuffer](size_t width, size_t height, webrtc::BufferType bufferType) -&gt; CVPixelBufferRef {
&gt; +    auto pixelBuffer = adoptCF(webrtc::createPixelBufferFromFrame(frame, [](size_t width, size_t height, webrtc::BufferType bufferType) -&gt; CVPixelBufferRef {

I think I was assuming that `newPixelBuffer` and `pixelBuffer` would be the same here, but they may not be.

This may be the cause of the regression.  Need to check into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788807</commentid>
    <comment_count>10</comment_count>
      <attachid>436790</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-31 01:01:48 -0700</bug_when>
    <thetext>Comment on attachment 436790
Patch v4

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

&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:434
&gt;&gt; +    auto pixelBuffer = adoptCF(webrtc::createPixelBufferFromFrame(frame, [](size_t width, size_t height, webrtc::BufferType bufferType) -&gt; CVPixelBufferRef {
&gt; 
&gt; I think I was assuming that `newPixelBuffer` and `pixelBuffer` would be the same here, but they may not be.
&gt; 
&gt; This may be the cause of the regression.  Need to check into this.

The idea of pixelBufferFromFrame is the following:
- In most cases, there is no need to do any conversion/allocation, pixelBuffer is directly retrieved from frame which keeps ownership of the underlying pixel buffer.
- In some cases, in particular for muted frames, the pixel buffer is not I420, in which case we do need a conversion. The idea is that pixelBuffer will not own ownership on the new pixel buffer but newPixelBuffer will actually own it since it is a RetainPtr.

The easiest way to fix this would be to apply the same strategy in WebKitDecoderReceiver::Decoded as in LibWebRTCCodecs::encodeFrame or RealtimeIncomingVideoSourceCocoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788809</commentid>
    <comment_count>11</comment_count>
      <attachid>436852</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-31 01:10:52 -0700</bug_when>
    <thetext>Created attachment 436852
Alternative approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788812</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-31 01:12:26 -0700</bug_when>
    <thetext>I uploaded the alternative approach.
I am fine with your approach since that might be easier to maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788976</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-31 11:07:54 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; I uploaded the alternative approach.
&gt; I am fine with your approach since that might be easier to maintain.

Thanks!  The tests clearly say that I made a logic error (logic change) in my patch, but I can&apos;t see what that is!  I may need to step away from the patch for a few days if I can&apos;t find it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789177</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-31 17:48:39 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #13)
&gt; (In reply to youenn fablet from comment #12)
&gt; &gt; I uploaded the alternative approach.
&gt; &gt; I am fine with your approach since that might be easier to maintain.
&gt; 
&gt; Thanks!  The tests clearly say that I made a logic error (logic change) in
&gt; my patch, but I can&apos;t see what that is!  I may need to step away from the
&gt; patch for a few days if I can&apos;t find it.

I think I see the inadvertent logic change that I made in LibWebRTCCodecs.cpp.

Testing incremental changes locally now to verify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789199</commentid>
    <comment_count>15</comment_count>
      <attachid>436790</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-31 19:23:59 -0700</bug_when>
    <thetext>Comment on attachment 436790
Patch v4

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:460
&gt; -    auto sample = RemoteVideoSample::create(pixelBuffer, MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt; +    auto sample = RemoteVideoSample::create(pixelBuffer.get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt;      if (!sample) {
&gt;          // FIXME: Optimize this code path, currently we have non BGRA for muted frames at least.
&gt; -        newPixelBuffer = convertToBGRA(pixelBuffer);
&gt; -        sample = RemoteVideoSample::create(newPixelBuffer.get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt; +        auto convertedPixelBuffer = convertToBGRA(pixelBuffer.get());
&gt; +        sample = RemoteVideoSample::create(convertedPixelBuffer.get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt;      }
&gt;  
&gt;      encoder.connection-&gt;send(Messages::LibWebRTCCodecsProxy::EncodeFrame { encoder.identifier, *sample, frame.timestamp(), shouldEncodeAsKeyFrame }, 0);

The logic bug I was missing was that the CVPixelBufferRef needed to be retained until after send() is called at the end of the method.

By creating a local `convertedPixelBuffer` variable, the CVPixelBufferRef is released before send() is called, causing the bug.

The fix is to reuse `pixelBuffer` to store the converted CVPixelBufferRef since its scope is the same as the send() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789202</commentid>
    <comment_count>16</comment_count>
      <attachid>436986</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-08-31 19:27:28 -0700</bug_when>
    <thetext>Created attachment 436986
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789434</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-01 13:02:12 -0700</bug_when>
    <thetext>Committed r281868 (241198@main): &lt;https://commits.webkit.org/241198@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436986.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789436</commentid>
    <comment_count>18</comment_count>
      <attachid>436986</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-01 13:07:06 -0700</bug_when>
    <thetext>Comment on attachment 436986
Patch v5

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:457
&gt; +        pixelBuffer = convertToBGRA(pixelBuffer.get());
&gt; +        sample = RemoteVideoSample::create(pixelBuffer.get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));

For future reference, don’t need a local variable for this. Intermediates are kept alive until the full expression they are part of is done, in this case until the function returns, so this would be correct:

    sample = RemoteVideoSample::create(convertToBGRA(pixelBuffer.get()).get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));

But also, is it important to reuse the variable? Could just use a new one:

    auto convertedBuffer = convertToBGRA(pixelBuffer.get());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789437</commentid>
    <comment_count>19</comment_count>
      <attachid>436986</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-01 13:11:27 -0700</bug_when>
    <thetext>Comment on attachment 436986
Patch v5

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

&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:457
&gt;&gt; +        sample = RemoteVideoSample::create(pixelBuffer.get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt; 
&gt; For future reference, don’t need a local variable for this. Intermediates are kept alive until the full expression they are part of is done, in this case until the function returns, so this would be correct:
&gt; 
&gt;     sample = RemoteVideoSample::create(convertToBGRA(pixelBuffer.get()).get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt; 
&gt; But also, is it important to reuse the variable? Could just use a new one:
&gt; 
&gt;     auto convertedBuffer = convertToBGRA(pixelBuffer.get());

It is important to have a variable outside the scope of the `if` block to keep the CVPixelBufferRef alive until `send()` is called later in the method.  If this isn&apos;t done, it causes two test failures.

See Comment #15 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789467</commentid>
    <comment_count>20</comment_count>
      <attachid>436986</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-01 13:49:40 -0700</bug_when>
    <thetext>Comment on attachment 436986
Patch v5

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:457
&gt;&gt;&gt; +        sample = RemoteVideoSample::create(pixelBuffer.get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt;&gt; 
&gt;&gt; For future reference, don’t need a local variable for this. Intermediates are kept alive until the full expression they are part of is done, in this case until the function returns, so this would be correct:
&gt;&gt; 
&gt;&gt;     sample = RemoteVideoSample::create(convertToBGRA(pixelBuffer.get()).get(), MediaTime(frame.timestamp_us() * 1000, 1000000), toMediaSampleVideoRotation(frame.rotation()));
&gt;&gt; 
&gt;&gt; But also, is it important to reuse the variable? Could just use a new one:
&gt;&gt; 
&gt;&gt;     auto convertedBuffer = convertToBGRA(pixelBuffer.get());
&gt; 
&gt; It is important to have a variable outside the scope of the `if` block to keep the CVPixelBufferRef alive until `send()` is called later in the method.  If this isn&apos;t done, it causes two test failures.
&gt; 
&gt; See Comment #15 for details.

Makes sense. Seems like we have a small design problem that we should return and fix. RemoteVideoSample has a dangerous interface if it takes a raw pointer and the caller needs to keep it alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789716</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-09-02 08:50:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #20)
&gt; Makes sense. Seems like we have a small design problem that we should return
&gt; and fix. RemoteVideoSample has a dangerous interface if it takes a raw
&gt; pointer and the caller needs to keep it alive.

Bug 229806: RemoteVideoSample needs CVPixelBufferRef to be kept alive, but relies on caller to retain it</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436754</attachid>
            <date>2021-08-29 20:04:13 -0700</date>
            <delta_ts>2021-08-30 07:49:10 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-229661-20210829200428.patch</filename>
            <type>text/plain</type>
            <size>13518</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjN2UwZTA2ZDgzNmIxMmFlMTFlMTQ4MDEzNjQ3ZDZmYjQ0NTAzYzMxLi43Zjk3
MTg3YzQ5MjU1ZjhlOGRkNmRmMTMwZDFlZTA1ODQyMjc4ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wOC0yOSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdIExlYWsgb3Igb3Zl
ci1yZWxlYXNlIG9mIENGUGl4ZWxCdWZmZXJSZWYgcmV0dXJuZWQgZnJvbSB3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIy
OTY2MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNTA3ODI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6CisgICAgICAgICh3ZWJydGM6OldlYktpdERl
Y29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisgICAgICAgIC0gVXBkYXRlIHRvIGNhbGwgcmVuYW1l
ZCBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgpIGZ1bmN0aW9uLgorICAgICAgICAgIFRoaXMg
bWV0aG9kIGFscmVhZHkgcmVsZWFzZWQgdGhlIHJldHVybmVkIENGUGl4ZWxCdWZmZXJSZWYsIHNv
CisgICAgICAgICAgaXQgZGlkIG5vdCByZXF1aXJlIGFueSBtb3JlIGNoYW5nZXMuICBBbHNvLCBp
dHMgZnVuY3RvcgorICAgICAgICAgIHJldHVybmVkIGEgKzEgcmV0YWluZWQgQ0ZQaXhlbEJ1ZmZl
clJlZiwgc28gaXQgZGlkIG5vdCBuZWVkIHRvCisgICAgICAgICAgY2hhbmdlLCBlaXRoZXIuCisK
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg6Cisg
ICAgICAgIC0gSW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+IGZvciBDRl9SRVRVUk5T
X1JFVEFJTkVELgorICAgICAgICAod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSk6
CisgICAgICAgIC0gTmFtZSBjb25zdCBzdGQ6OmZ1bmN0aW9uPD4mIGFzIGBjcmVhdGVQaXhlbEJ1
ZmZlcmAgdG8gZGVzY3JpYmUKKyAgICAgICAgICBpdHMgYmVoYXZpb3IuCisgICAgICAgIC0gQWRk
IENGX1JFVFVSTlNfUkVUQUlORUQgdG8gZGVzY3JpYmUgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhl
CisgICAgICAgICAgcmV0dXJuZWQgb2JqZWN0LgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisgICAgICAgICh3ZWJydGM6OnBpeGVsQnVmZmVy
RnJvbUZyYW1lKToKKyAgICAgICAgLSBSZW5hbWUgdG8gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJh
bWUoKS4KKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAg
ICAgICAtIFJlbmFtZSBmcm9tIHBpeGVsQnVmZmVyRnJvbUZyYW1lKCkuCisgICAgICAgIC0gUmVu
YW1lIGNvbnN0IHN0ZDo6ZnVuY3Rpb248PiYgYXJndW1lbnQgdG8gYGNyZWF0ZVBpeGVsQnVmZmVy
YAorICAgICAgICAgIHRvIGRlc2NyaWJlIGl0cyBiZWhhdmlvciBvZiByZXR1cm5pbmcgYSArMSBy
ZXRhaW5lZAorICAgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYuCisgICAgICAgIC0gRml4IGxhc3Qg
cmV0dXJuIHN0YXRlbWVudCB0byByZXR1cm4gYSArMSByZXRhaW5lZAorICAgICAgICAgIENGUGl4
ZWxCdWZmZXJSZWYgaWYgaXQgaXMgbm90IG51bGxwdHIuCisKIDIwMjEtMDgtMTkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENE
dGxzVHJhbnNwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MGFmZWU1NTE5M2RlNzhkODc4MzQ3ODQ2NTYz
OTQ0M2E0OTE3ZS4uZGMzMzgzMzc1YzJkZjFlZjZhNTU4Njc1NDIyNjliNjI2MDUxNjM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ug
b2YgQ0ZQaXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisKIDIwMjEtMDgtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gTW92ZSBjb250ZW50IGJ1aWxkZXIgZnVuY3Rpb25hbGl0eSB0byBhIGRlZGlj
YXRlZCBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZDU0YTEwYzk2ZGQ3Yjc5OTVkMjVkZjkxOWQ3NDk5NmQz
YTBiMzRmLi41ZTI5MmM4OGJhZTZjYjE5OTc3MDM2MGMxODZlNmQzYWI3ZWFmMjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ugb2YgQ0ZQ
aXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisgICAgICAgIC0gRGVjbGFyZSBsb2NhbCBgY29udmVydGVkUGl4ZWxCdWZmZXJgIHZhcmlhYmxl
IHNpbmNlCisgICAgICAgICAgYG5ld1BpeGVsQnVmZmVyYCB3YXMgcmVtb3ZlZCBmb3IgdGhlIGFi
b3ZlIGNoYW5nZXMuCisKIDIwMjEtMDgtMjcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggc3RkOjpvcHRpb25hbDw+IHN0cmlwcGluZyBpbiBNZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNv
ZGVyUmVjZWl2ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCmluZGV4IGYwYmE5ZGY0MzQ0
NzNlN2YzNjgzNGRmNzA4NDcyYmEwMDIyMWQ5NGUuLmI3NWM0MjkwOWY3YjQ5NmM3NzFmZmM4MDk1
OGM4ZTUyMDEyZmNhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dERlY29kZXJSZWNlaXZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2MCw3IEBAIE9TU3RhdHVzIFdlYktpdERlY29k
ZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAKIGludDMyX3QgV2ViS2l0RGVj
b2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0
aCwgc2l6ZV90IGhlaWdodCwgQnVmZmVyVHlwZSB0eXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUs
IFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4g
Q1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+
cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7
CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCA3NGQz
NzY4NWI0NzQ2NTNmOTRkNzhjNjE4YjdmNWNkMzgyM2Y5OWNmLi4zZWEwNGZkNThmNGM2NWZlYzM1
NzViYTUwMWQzNjA5NWI2OWE2M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2Zy
YW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS9zY29wZWRfcmVmcHRyLmgiCisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogdXNpbmcg
Q1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKQEAgLTQ2LDcgKzQ3LDcgQEAg
dm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKIGJvb2wgaXNIMjY0SGFy
ZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUgeyBJNDIwLCBJ
MDEwIH07Ci1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVv
RnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXpl
X3QsIEJ1ZmZlclR5cGUpPiYpOworQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZy
b21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVm
ZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKSBD
Rl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFt
ZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4IDI3Y2FlOTc4MjI3
ZmVlYWI5MGE0YjZmZmM3ZjVlZmNiZjA2NDE1ZmUuLjNhNjRiMDE0ZDBmMTdkMmNhZDgyNDU1ZWIy
NjU4NTZiZjk1ZTcyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxC
dWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNlKiBmcmFtZQogICAgIHJldHVy
biB0cnVlOwogfQogCi1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0
IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYo
c2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgbWFrZVBpeGVsQnVmZmVyKQorQ1ZQaXhlbEJ1
ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFt
ZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBC
dWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQogewogICAgIGF1dG8gYnVmZmVyID0gZnJh
bWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CiAgICAgaWYgKGJ1ZmZlci0+dHlwZSgpICE9IFZpZGVv
RnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBj
b25zdCBzdGQ6OmZ1bmN0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
IAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lk
dGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKKyAgICAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVy
LT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZl
clR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikgewogICAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKSA8PCAiUGl4ZWwgYnVmZmVyIGNyZWF0
aW9uIGZhaWxlZC4iOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzIsNyArMTcy
LDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0Zy
YW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChSVENDVlBpeGVsQnVmZmVyICopZnJhbWVCdWZm
ZXI7Ci0gICAgcmV0dXJuIHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyOworICAgIHJldHVybiBy
dGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/IENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxC
dWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IDBjNzFlMWRiMTBmYTQzN2E3
YzAwNDNkMzY0ZjQ0YmY3MjM3MTFjOTcuLjA1Yjk0YjYyM2RmZmIzOGYwOGExZjUxZDI5ZGNlMjA4
NTIyNjRiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMTcsOCArMTE3LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAg
ICAgICAgcmV0dXJuIG1fYmxhY2tGcmFtZS5nZXQoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4ZWxCdWZmZXI7Ci0gICAgcmV0dXJuIHdlYnJ0Yzo6cGl4
ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzLCAmbmV3UGl4ZWxCdWZmZXJdKHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENW
UGl4ZWxCdWZmZXJSZWYgeworICAgIHJldHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxC
dWZmZXJGcm9tRnJhbWUoZnJhbWUsIFtdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewogICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVp
Z2h0LCBidWZmZXJUeXBlKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzMCw5ICsxMjksOCBAQCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVy
RnJvbVZpZAogICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElG
SUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3RhdHVz
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIG5ld1Bp
eGVsQnVmZmVyID0gYWRvcHRDRihwaXhlbEJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBuZXdQaXhl
bEJ1ZmZlci5nZXQoKTsKLSAgICB9KTsKKyAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAg
IH0pKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFt
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMjhl
OWM2OTgyYWM1NDY5ZWU5NWZhYjg2ZGY3NmU2Y2YzOGU5MjRmYi4uZTkyN2E5Y2ZmOTYwNWJkYjkz
M2NhMWIyYjc2OWUxZjYxYzAxODMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzMSw4ICs0MzEsNyBAQCBp
bnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0gICAgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IG5ld1BpeGVsQnVmZmVyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSB3
ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbJm5ld1BpeGVsQnVmZmVyXShzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAt
PiBDVlBpeGVsQnVmZmVyUmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gYWRvcHRDRih3ZWJy
dGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbXShzaXplX3Qgd2lkdGgsIHNp
emVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVm
ZmVyUmVmIHsKICAgICAgICAgT1NUeXBlIHBvb2xCdWZmZXJUeXBlOwogICAgICAgICBzd2l0Y2gg
KGJ1ZmZlclR5cGUpIHsKICAgICAgICAgY2FzZSB3ZWJydGM6OkJ1ZmZlclR5cGU6Okk0MjA6CkBA
IC00NDUsOSArNDQ0LDggQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICAgICAgaWYgKCFw
aXhlbEJ1ZmZlclBvb2wpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBu
ZXdQaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbVBvb2wocGl4ZWxC
dWZmZXJQb29sKTsKLSAgICAgICAgcmV0dXJuIG5ld1BpeGVsQnVmZmVyLmdldCgpOwotICAgIH0p
OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChwaXhl
bEJ1ZmZlclBvb2wpLmxlYWtSZWYoKTsKKyAgICB9KSk7CiAKICAgICBpZiAoIXBpeGVsQnVmZmVy
KQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwpAQCAtNDU1LDggKzQ1
Myw4IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmCiAgICAgYXV0byBzYW1wbGUgPSBSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1w
X3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUu
cm90YXRpb24oKSkpOwogICAgIGlmICghc2FtcGxlKSB7CiAgICAgICAgIC8vIEZJWE1FOiBPcHRp
bWl6ZSB0aGlzIGNvZGUgcGF0aCwgY3VycmVudGx5IHdlIGhhdmUgbm9uIEJHUkEgZm9yIG11dGVk
IGZyYW1lcyBhdCBsZWFzdC4KLSAgICAgICAgbmV3UGl4ZWxCdWZmZXIgPSBjb252ZXJ0VG9CR1JB
KHBpeGVsQnVmZmVyKTsKLSAgICAgICAgc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0
ZShuZXdQaXhlbEJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICog
MTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9u
KCkpKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRUb0JHUkEo
cGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgICAgICBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6
Y3JlYXRlKGNvbnZlcnRlZFBpeGVsQnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0
YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJh
bWUucm90YXRpb24oKSkpOwogICAgIH0KIAogICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVu
dGlmaWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFt
ZSB9LCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436771</attachid>
            <date>2021-08-30 07:49:12 -0700</date>
            <delta_ts>2021-08-30 09:17:25 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-229661-20210830074929.patch</filename>
            <type>text/plain</type>
            <size>30765</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjN2UwZTA2ZDgzNmIxMmFlMTFlMTQ4MDEzNjQ3ZDZmYjQ0NTAzYzMxLi5iM2M1
N2NmMjdkZDkzNjE2YWQ0NzMyYzk4ZGVhZWM3NzUxNTE4Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wOC0yOSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdIExlYWsgb3Igb3Zl
ci1yZWxlYXNlIG9mIENGUGl4ZWxCdWZmZXJSZWYgcmV0dXJuZWQgZnJvbSB3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIy
OTY2MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNTA3ODI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5l
eHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAg
IC0gVXBkYXRlIGV4cG9ydCBzeW1ib2wgZm9yIHJlbmFtZSBmcm9tIHBpeGVsQnVmZmVyRnJvbUZy
YW1lKCkgdG8KKyAgICAgICAgICBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgpLgorCisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIGNhbGwgcmVuYW1lZCBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgp
IGZ1bmN0aW9uLgorICAgICAgICAgIFRoaXMgbWV0aG9kIGFscmVhZHkgcmVsZWFzZWQgdGhlIHJl
dHVybmVkIENGUGl4ZWxCdWZmZXJSZWYsIHNvCisgICAgICAgICAgaXQgZGlkIG5vdCByZXF1aXJl
IGFueSBtb3JlIGNoYW5nZXMuICBBbHNvLCBpdHMgZnVuY3RvcgorICAgICAgICAgIHJldHVybmVk
IGEgKzEgcmV0YWluZWQgQ0ZQaXhlbEJ1ZmZlclJlZiwgc28gaXQgZGlkIG5vdCBuZWVkIHRvCisg
ICAgICAgICAgY2hhbmdlLCBlaXRoZXIuCisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgIC0gSW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ0ZCYXNlLmg+IGZvciBDRl9SRVRVUk5TX1JFVEFJTkVELgorICAgICAgICAod2VicnRjOjpj
cmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSk6CisgICAgICAgIC0gTmFtZSBjb25zdCBzdGQ6OmZ1
bmN0aW9uPD4mIGFzIGBjcmVhdGVQaXhlbEJ1ZmZlcmAgdG8gZGVzY3JpYmUKKyAgICAgICAgICBp
dHMgYmVoYXZpb3IuCisgICAgICAgIC0gQWRkIENGX1JFVFVSTlNfUkVUQUlORUQgdG8gZGVzY3Jp
YmUgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlCisgICAgICAgICAgcmV0dXJuZWQgb2JqZWN0Lgor
ICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06Cisg
ICAgICAgICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgLSBSZW5hbWUg
dG8gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKS4KKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAgICAgICAtIFJlbmFtZSBmcm9tIHBpeGVsQnVmZmVy
RnJvbUZyYW1lKCkuCisgICAgICAgIC0gUmVuYW1lIGNvbnN0IHN0ZDo6ZnVuY3Rpb248PiYgYXJn
dW1lbnQgdG8gYGNyZWF0ZVBpeGVsQnVmZmVyYAorICAgICAgICAgIHRvIGRlc2NyaWJlIGl0cyBi
ZWhhdmlvciBvZiByZXR1cm5pbmcgYSArMSByZXRhaW5lZAorICAgICAgICAgIENWUGl4ZWxCdWZm
ZXJSZWYuCisgICAgICAgIC0gRml4IGxhc3QgcmV0dXJuIHN0YXRlbWVudCB0byByZXR1cm4gYSAr
MSByZXRhaW5lZAorICAgICAgICAgIENGUGl4ZWxCdWZmZXJSZWYgaWYgaXQgaXMgbm90IG51bGxw
dHIuCisKKyAgICAgICAgKiBXZWJLaXQvbGlid2VicnRjLmRpZmY6CisgICAgICAgIC0gVXBkYXRl
IGRpZmYgZm9yIFdlYktpdFV0aWxpdGllcy57aHxtbX0uCisKIDIwMjEtMDgtMTkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENE
dGxzVHJhbnNwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MGFmZWU1NTE5M2RlNzhkODc4MzQ3ODQ2NTYz
OTQ0M2E0OTE3ZS4uZGMzMzgzMzc1YzJkZjFlZjZhNTU4Njc1NDIyNjliNjI2MDUxNjM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ug
b2YgQ0ZQaXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisKIDIwMjEtMDgtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gTW92ZSBjb250ZW50IGJ1aWxkZXIgZnVuY3Rpb25hbGl0eSB0byBhIGRlZGlj
YXRlZCBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZDU0YTEwYzk2ZGQ3Yjc5OTVkMjVkZjkxOWQ3NDk5NmQz
YTBiMzRmLi41ZTI5MmM4OGJhZTZjYjE5OTc3MDM2MGMxODZlNmQzYWI3ZWFmMjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ugb2YgQ0ZQ
aXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisgICAgICAgIC0gRGVjbGFyZSBsb2NhbCBgY29udmVydGVkUGl4ZWxCdWZmZXJgIHZhcmlhYmxl
IHNpbmNlCisgICAgICAgICAgYG5ld1BpeGVsQnVmZmVyYCB3YXMgcmVtb3ZlZCBmb3IgdGhlIGFi
b3ZlIGNoYW5nZXMuCisKIDIwMjEtMDgtMjcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggc3RkOjpvcHRpb25hbDw+IHN0cmlwcGluZyBpbiBNZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Mu
ZXhwCmluZGV4IDczYmNmMzg2OGNlYWEwNzhjYTRmNTg5ZWVjZWY5Y2E5N2Y0NjdhOTYuLjBkMzVj
ZTQ5YzM3ZGNmNzhhZGU0YzI3YmE5YTllYjgxMjYwNjg4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlP
Uy5leHAKQEAgLTk3LDE0ICs5NywxNCBAQCBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnlFdgogX19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJG
YWN0b3J5RXYKIF9fWk42d2VicnRjMjdTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UxNlJlbW92
ZUNhbmRpZGF0ZXNFUktOU3QzX18xNnZlY3RvcklON2NyaWNrZXQ5Q2FuZGlkYXRlRU5TMV85YWxs
b2NhdG9ySVM0X0VFRUUKIF9fWk5LNndlYnJ0YzIxSWNlQ2FuZGlkYXRlSW50ZXJmYWNlMTBzZXJ2
ZXJfdXJsRXYKK19fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgog
X19aTjZ3ZWJydGMyMHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42d2VicnRjMjZjcmVhdGVX
ZWJLaXREZWNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18xMldl
YktpdFZQOVZUQkUKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9yeUVOU18x
MFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRMb3dMYXRlbmN5RQogX19a
TjZ3ZWJydGMyOXNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA5
RGVjb2RlckV2Ci1fX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVv
RnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVF
RUVFCi1fX1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKK19fWk42
d2VicnRjMjZjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVSS05T
dDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKIF9fWk4z
cnRjMjRCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkxOUNyZWF0ZUFzeW5jUmVzb2x2ZXJFdgogX19a
TjNydGMyNEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeUMyRXYKIF9fWk4zcnRjMjRCYXNpY1BhY2tl
dFNvY2tldEZhY3RvcnlEMkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggNzNi
Y2YzODY4Y2VhYTA3OGNhNGY1ODllZWNlZjljYTk3ZjQ2N2E5Ni4uMGQzNWNlNDljMzdkY2Y3OGFk
ZTRjMjdiYTlhOWViODEyNjA2ODhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApA
QCAtOTcsMTQgKzk3LDE0IEBAIF9fWk42d2VicnRjMzJDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVy
RmFjdG9yeUV2CiBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlF
dgogX19aTjZ3ZWJydGMyN1Nlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTE2UmVtb3ZlQ2FuZGlk
YXRlc0VSS05TdDNfXzE2dmVjdG9ySU43Y3JpY2tldDlDYW5kaWRhdGVFTlMxXzlhbGxvY2F0b3JJ
UzRfRUVFRQogX19aTks2d2VicnRjMjFJY2VDYW5kaWRhdGVJbnRlcmZhY2UxMHNlcnZlcl91cmxF
dgorX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCiBfX1pONndl
YnJ0YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdERl
Y29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzEyV2ViS2l0VlA5
VlRCRQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0
SDI2NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExvd0xhdGVuY3lFCiBfX1pONndlYnJ0
YzI5c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVy
V2ViS2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVy
RXYKLV9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVS
S05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKLV9f
Wk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMy
NmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThm
dW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjNydGMyNEJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeTE5Q3JlYXRlQXN5bmNSZXNvbHZlckV2CiBfX1pOM3J0YzI0
QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5QzJFdgogX19aTjNydGMyNEJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeUQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCA3M2JjZjM4NjhjZWFhMDc4
Y2E0ZjU4OWVlY2VmOWNhOTdmNDY3YTk2Li4wZDM1Y2U0OWMzN2RjZjc4YWRlNGMyN2JhOWE5ZWI4
MTI2MDY4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC05NywxNCArOTcsMTQgQEAg
X19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RXYKIF9fWk42d2Vi
cnRjMzJDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUV2CiBfX1pONndlYnJ0YzI3U2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlMTZSZW1vdmVDYW5kaWRhdGVzRVJLTlN0M19fMTZ2ZWN0
b3JJTjdjcmlja2V0OUNhbmRpZGF0ZUVOUzFfOWFsbG9jYXRvcklTNF9FRUVFCiBfX1pOSzZ3ZWJy
dGMyMUljZUNhbmRpZGF0ZUludGVyZmFjZTEwc2VydmVyX3VybEV2CitfX1pONndlYnJ0YzE4cGl4
ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlv
blN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2
Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlF
TlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVF
bmNvZGVyQWxsb3dlZEViCiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYK
IF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgotX19aTjZ3ZWJydGMyMHBp
eGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklG
UDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQotX19aTjZ3ZWJydGMxOHBpeGVsQnVm
ZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCitfX1pONndlYnJ0YzI2Y3JlYXRlUGl4ZWxCdWZmZXJG
cm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVm
ZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5MTlDcmVhdGVBc3luY1Jlc29sdmVyRXYKIF9fWk4zcnRjMjRCYXNpY1BhY2tldFNvY2tldEZh
Y3RvcnlDMkV2CiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5RDJFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCmluZGV4
IGYwYmE5ZGY0MzQ0NzNlN2YzNjgzNGRmNzA4NDcyYmEwMDIyMWQ5NGUuLmI3NWM0MjkwOWY3YjQ5
NmM3NzFmZmM4MDk1OGM4ZTUyMDEyZmNhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVy
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2MCw3IEBAIE9TU3RhdHVz
IFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAKIGludDMy
X3QgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogewot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNd
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgQnVmZmVyVHlwZSB0eXBlKSAtPiBDVlBpeGVs
QnVmZmVyUmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5
cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQ
b29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVy
VHlwZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMu
aAppbmRleCA3NGQzNzY4NWI0NzQ2NTNmOTRkNzhjNjE4YjdmNWNkMzgyM2Y5OWNmLi4zZWEwNGZk
NThmNGM2NWZlYzM1NzViYTUwMWQzNjA5NWI2OWE2M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS9zY29wZWRfcmVmcHRyLmgi
CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KIAogdXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKQEAgLTQ2
LDcgKzQ3LDcgQEAgdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKIGJv
b2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1ZmZlclR5
cGUgeyBJNDIwLCBJMDEwIH07Ci1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYo
c2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYpOworQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQ
aXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBp
eGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4
IDI3Y2FlOTc4MjI3ZmVlYWI5MGE0YjZmZmM3ZjVlZmNiZjA2NDE1ZmUuLjNhNjRiMDE0ZDBmMTdk
MmNhZDgyNDU1ZWIyNjU4NTZiZjk1ZTcyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBDb3B5VmlkZW9G
cmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNlKiBmcmFt
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJv
bUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4
ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgbWFrZVBpeGVsQnVmZmVy
KQorQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQogewogICAgIGF1dG8g
YnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CiAgICAgaWYgKGJ1ZmZlci0+dHlw
ZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVy
KGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsK
KyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lk
dGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKICAgICAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKSA8PCAiUGl4ZWwg
YnVmZmVyIGNyZWF0aW9uIGZhaWxlZC4iOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNzIsNyArMTcyLDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShj
b25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChSVENDVlBpeGVsQnVmZmVy
ICopZnJhbWVCdWZmZXI7Ci0gICAgcmV0dXJuIHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyOwor
ICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/IENWUGl4ZWxCdWZmZXJSZXRh
aW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYKaW5kZXgg
MzA5MjExNjM4M2MzNWNlYTUyZjliODZmMDljMGUwZGU0YjI3NTZkZC4uOGJjYTNjZTA5MTg1MjJm
MTcxZWI2M2NhYTVmMDFjMDRiM2ZhOGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmCkBAIC05NDQsOSArOTQ0LDkgQEAgbmV3IGZp
bGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogLS0tIC9kZXYv
bnVsbAogKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAotQEAgLTAsMCArMSw1NCBAQAorQEAgLTAsMCArMSw1
MyBAQAogKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiArICoKICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3Mywy
OSArOTczLDI4IEBAIGluZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogKyNwcmFnbWEgb25j
ZQogKwogKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCi0rI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCi0rI2luY2x1ZGUgIndlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIgotKyNpbmNsdWRlICJ3ZWJydGMvbWVk
aWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKKysjaW5jbHVkZSAiYXBpL3Nj
b3BlZF9yZWZwdHIuaCIKKysjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CisrI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiArCi0rdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhl
bEJ1ZmZlclJlZjsKKyt1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIq
OwogKwogK25hbWVzcGFjZSB3ZWJydGMgewogKwotK2NsYXNzIFZpZGVvRGVjb2RlckZhY3Rvcnk7
Ci0rY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKICtjbGFzcyBWaWRlb0ZyYW1lOwogKwotK2Vu
dW0gY2xhc3MgV2ViS2l0Q29kZWNTdXBwb3J0IHsgSDI2NCwgSDI2NEFuZFZQOCB9OwotKwotK3N0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVu
Y29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCk7Ci0rc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0
Q29kZWNTdXBwb3J0KTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjUgeyBPZmYsIE9uIH07CisrZW51
bSBjbGFzcyBXZWJLaXRWUDkgeyBPZmYsIFByb2ZpbGUwLCBQcm9maWxlMEFuZDIgfTsKKytlbnVt
IGNsYXNzIFdlYktpdFZQOVZUQiB7IE9mZiwgT24gfTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjRM
b3dMYXRlbmN5IHsgT2ZmLCBPbiB9OwogKwogK3ZvaWQgc2V0QXBwbGljYXRpb25TdGF0dXMoYm9v
bCBpc0FjdGl2ZSk7CiArCiArdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29s
KTsKICtib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKICsKLStDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYpOworK2VudW0gY2xh
c3MgQnVmZmVyVHlwZSB7IEk0MjAsIEkwMTAgfTsKKytDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBp
eGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4
ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CiArcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYp
OwogKwogK30KQEAgLTEwMDQsOSArMTAwMyw5IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRl
eCAwMDAwMDAwMDAwMC4uNjVlZWZhMzZmMmQKIC0tLSAvZGV2L251bGwKICsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCi1AQCAtMCwwICsxLDE4NSBAQAorQEAgLTAsMCArMSwxNzggQEAKICsvKgotKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKyAq
CiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMyLDY4ICsxMDMxLDE1IEBAIGlu
ZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKwogKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRp
ZXMuaCIKICsKLSsvLyNpbmNsdWRlICJDb21tb24vUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2Vy
dmVyLmgiCi0rI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCi0rCiArI2luY2x1
ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogKyNpbmNsdWRlICJuYXRpdmUvc3JjL29iamNf
ZnJhbWVfYnVmZmVyLmgiCisrI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICsjaW5jbHVk
ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgotKyNp
bmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCi0rI2luY2x1ZGUgIkZyYW1ld29yay9I
ZWFkZXJzL1dlYlJUQy9SVENWaWRlb0NvZGVjRmFjdG9yeS5oIgotKyNpbmNsdWRlICJGcmFtZXdv
cmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZS5oIgorKyNpbmNsdWRlICJsaWJ5dXYvY3B1
X2lkLmgiCisrI2luY2x1ZGUgImxpYnl1di9yb3cuaCIKICsjaW5jbHVkZSAiRnJhbWV3b3JrL0hl
YWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKLSsjaW5jbHVkZSAiRnJhbWV3b3Jr
L05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0rI2luY2x1ZGUgIkZyYW1ld29y
ay9OYXRpdmUvYXBpL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgotKy8qCi0rI2lmICFkZWZpbmVk
KFdFQlJUQ19JT1MpCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1VJ
QXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciIpKSkKLStAaW50ZXJmYWNlIFJUQ1VJQXBwbGljYXRp
b25TdGF0dXNPYnNlcnZlciA6IE5TT2JqZWN0Ci0rCi0rKyAoaW5zdGFuY2V0eXBlKXNoYXJlZElu
c3RhbmNlOwotKysgKHZvaWQpcHJlcGFyZUZvclVzZTsKLSsKLSstIChCT09MKWlzQXBwbGljYXRp
b25BY3RpdmU7Ci0rCi0rQGVuZAotKyNlbmRpZgotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENVSUFw
cGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgewotKyAgICBCT09MIF9pc0FjdGl2ZTsKLSt9Ci0rCi0r
KyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlIHsKLSsgICAgc3RhdGljIGlkIHNoYXJlZElu
c3RhbmNlOwotKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSsgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW3Nl
bGYgYWxsb2NdIGluaXRdOwotKyAgICB9KTsKKysjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2
L2luY2x1ZGUvbGlieXV2LmgiCiArCi0rICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKLSt9Ci0r
Ci0rKyAodm9pZClwcmVwYXJlRm9yVXNlIHsKLSsgICAgX191bnVzZWQgUlRDVUlBcHBsaWNhdGlv
blN0YXR1c09ic2VydmVyICpvYnNlcnZlciA9IFtzZWxmIHNoYXJlZEluc3RhbmNlXTsKLSt9Ci0r
Ci0rLSAoaWQpaW5pdCB7Ci0rICAgIF9pc0FjdGl2ZSA9IFlFUzsKLSsgICAgcmV0dXJuIHNlbGY7
Ci0rfQotKwotKy0gKHZvaWQpc2V0QWN0aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gWUVTOwotK30K
LSsKLSstICh2b2lkKXNldEluYWN0aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gTk87Ci0rfQotKwot
Ky0gKEJPT0wpaXNBcHBsaWNhdGlvbkFjdGl2ZSB7Ci0rICAgIHJldHVybiBfaXNBY3RpdmU7Ci0r
fQotKwotK0BlbmQKLSsqLwogK25hbWVzcGFjZSB3ZWJydGMgewogKwogK3ZvaWQgc2V0QXBwbGlj
YXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2ZSkKQEAgLTExMDYsNDAgKzEwNTIsMTMgQEAgaW5kZXgg
MDAwMDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiArICovCiArfQogKwotK3N0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdl
YktpdENvZGVjU3VwcG9ydCBjb2RlY1N1cHBvcnQpCi0rewotKyNpZiBFTkFCTEVfVkNQX0VOQ09E
RVIKLSsgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10gewotKyAgICAgICAgd2VicnRjOjpWUE1vZHVsZUluaXRpYWxpemUo
KTsKLSsgICAgfSk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBPYmpDVG9OYXRpdmVWaWRlb0VuY29k
ZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDgg
PyBbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlk
ZW9FbmNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9Ci0rCi0rc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3Rv
cnkoV2ViS2l0Q29kZWNTdXBwb3J0IGNvZGVjU3VwcG9ydCkKLSt7Ci0rICAgIHJldHVybiBPYmpD
VG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1
cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IGFsbG9j
XSBpbml0XSA6IFtbUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9
Ci0rCi0rc3RhdGljIGJvb2wgaDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSB0cnVlOwotK3Zv
aWQgc2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbCBhbGxvd2VkKQotK3sKLSsgICAg
aDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSBhbGxvd2VkOwotK30KLSsKLStib29sIGlzSDI2
NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKQotK3sKLSsgICAgcmV0dXJuIGgyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkOwotK30KLSsKICtydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0Zy
YW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
cikKICt7CiArICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKmZyYW1lQnVmZmVyID0gW1tSVENDVlBpeGVs
QnVmZmVyIGFsbG9jXSBpbml0V2l0aFBpeGVsQnVmZmVyOnBpeGVsQnVmZmVyXTsKICsgICAgcmV0
dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihmcmFtZUJ1ZmZl
cik7CiArfQogKwotK3N0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUs
IENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7Cisrc3RhdGljIGJvb2wgQ29weVZpZGVv
RnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZSogZnJh
bWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7CiArICAgIFJUQ19EQ0hFQ0socGl4
ZWxfYnVmZmVyKTsKICsgICAgUlRDX0RDSEVDSyhDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRU
eXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5h
ckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZl
cikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UpOwog
KyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1
ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CkBAIC0xMTQ4
LDExICsxMDY3LDI2IEBAIGluZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKyAgICBpZiAo
Q1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbF9idWZmZXIsIDApICE9IGtDVlJldHVy
blN1Y2Nlc3MpCiArICAgICAgICByZXR1cm4gZmFsc2U7CiArCisrICAgIGF1dG8gc3JjX3dpZHRo
X3kgPSBmcmFtZS0+d2lkdGgoKTsKKysgICAgYXV0byBzcmNfaGVpZ2h0X3kgPSBmcmFtZS0+aGVp
Z2h0KCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJhbWUtPkNocm9tYVdpZHRoKCk7Cisr
ICAgIGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJvbWFIZWlnaHQoKTsKKysKICsgICAg
dWludDhfdCogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVy
R2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCkpOwogKyAgICBpbnQgZHN0X3N0
cmlkZV95ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIs
IDApOworKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworKyAgICBhdXRvIGRzdF9oZWlnaHRfeSA9IENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCk7CiArCiArICAgIHVpbnQ4X3QqIGRz
dF91diA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRk
cmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKSk7CiArICAgIGludCBkc3Rfc3RyaWRlX3V2ID0g
Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworKyAg
ICBhdXRvIGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxf
YnVmZmVyLCAxKTsKKysgICAgYXV0byBkc3RfaGVpZ2h0X3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEhl
aWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKysKKysgICAgaWYgKHNyY193aWR0aF95ICE9
IGRzdF93aWR0aF95CisrICAgICAgICB8fCBzcmNfaGVpZ2h0X3kgIT0gZHN0X2hlaWdodF95Cisr
ICAgICAgICB8fCBzcmNfd2lkdGhfdXYgIT0gZHN0X3dpZHRoX3V2CisrICAgICAgICB8fCBzcmNf
aGVpZ2h0X3V2ICE9IGRzdF9oZWlnaHRfdXYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CiArCiAr
ICAgIGludCByZXN1bHQgPSBsaWJ5dXY6Okk0MjBUb05WMTIoCiArICAgICAgICBmcmFtZS0+RGF0
YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwKQEAgLTExNjksMjQgKzExMDMsODIgQEAgaW5kZXggMDAw
MDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiArICAgIHJldHVybiB0cnVlOwogK30KICsKLSsKLStDVlBp
eGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1l
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYg
bWFrZVBpeGVsQnVmZmVyKQorK3N0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihjb25zdCB3ZWJydGM6OkkwMTBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lLCBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsX2J1ZmZlcikKICt7Ci0rICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIo
KS0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSsgICAgICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBm
cmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworKyAgICBSVENfRENIRUNLKHBp
eGVsX2J1ZmZlcik7CisrICAgIFJUQ19EQ0hFQ0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0
VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxh
bmFyVmlkZW9SYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1
ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2Up
OworKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisrICAg
IFJUQ19EQ0hFQ0tfRVEoQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbF9idWZmZXIs
IDApLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1lLT53aWR0aCgpKSk7CiArCi0rICAgICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVy
LT5oZWlnaHQoKSk7Ci0rICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCi0rICAgICAgICAgICAgQ29w
eVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT5HZXRJ
NDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgaWYgKENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJl
c3MocGl4ZWxfYnVmZmVyLCAwKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorKyAgICAgICAgcmV0dXJu
IGZhbHNlOworKworKyAgICBhdXRvIHNyY195ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZyYW1l
LT5EYXRhWSgpKTsKKysgICAgYXV0byBzcmNfdSA9IGNvbnN0X2Nhc3Q8dWludDE2X3QqPihmcmFt
ZS0+RGF0YVUoKSk7CisrICAgIGF1dG8gc3JjX3YgPSBjb25zdF9jYXN0PHVpbnQxNl90Kj4oZnJh
bWUtPkRhdGFWKCkpOworKyAgICBhdXRvIHNyY193aWR0aF95ID0gZnJhbWUtPndpZHRoKCk7Cisr
ICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdodCgpOworKyAgICBhdXRvIHNyY19z
dHJpZGVfeSA9IGZyYW1lLT5TdHJpZGVZKCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJh
bWUtPkNocm9tYVdpZHRoKCk7CisrICAgIGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJv
bWFIZWlnaHQoKTsKKysgICAgYXV0byBzcmNfc3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpOwor
KyAgICBhdXRvIHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCk7CisrCisrICAgIGF1dG8q
IGRzdF95ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNl
QWRkcmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSk7CisrICAgIGF1dG8gZHN0X3N0cmlkZV95
ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApIC8g
MjsKKysgICAgYXV0byBkc3Rfd2lkdGhfeSA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUo
cGl4ZWxfYnVmZmVyLCAwKTsKKysgICAgYXV0byBkc3RfaGVpZ2h0X3kgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworKworKyAgICBhdXRvKiBkc3RfdXYg
PSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNz
T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpKTsKKysgICAgYXV0byBkc3Rfc3RyaWRlX3V2ID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpIC8gMjsKKysg
ICAgYXV0byBkc3Rfd2lkdGhfdXYgPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMSk7CisrICAgIGF1dG8gZHN0X2hlaWdodF91diA9IENWUGl4ZWxCdWZmZXJHZXRI
ZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSk7CisrCisrICAgIGlmIChzcmNfd2lkdGhfeSAh
PSBkc3Rfd2lkdGhfeQorKyAgICAgICAgfHwgc3JjX2hlaWdodF95ICE9IGRzdF9oZWlnaHRfeQor
KyAgICAgICAgfHwgc3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorKyAgICAgICAgfHwgc3Jj
X2hlaWdodF91diAhPSBkc3RfaGVpZ2h0X3V2KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKwor
KyAgICBsaWJ5dXY6OkkwMTBUb1AwMTAoc3JjX3ksIHNyY19zdHJpZGVfeSwKKysgICAgICAgICAg
ICAgICAgICAgICAgIHNyY191LCBzcmNfc3RyaWRlX3UsCisrICAgICAgICAgICAgICAgICAgICAg
ICBzcmNfdiwgc3JjX3N0cmlkZV92LAorKyAgICAgICAgICAgICAgICAgICAgICAgZHN0X3ksIGRz
dF9zdHJpZGVfeSwgZHN0X3V2LCBkc3Rfc3RyaWRlX3V2LAorKyAgICAgICAgICAgICAgICAgICAg
ICAgc3JjX3dpZHRoX3ksIHNyY19oZWlnaHRfeSk7CisrCisrICAgIENWUGl4ZWxCdWZmZXJVbmxv
Y2tCYXNlQWRkcmVzcyhwaXhlbF9idWZmZXIsIDApOworKyAgICByZXR1cm4gdHJ1ZTsKKyt9Cisr
CisrQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQorK3sKKysgICAgYXV0
byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKysgICAgaWYgKGJ1ZmZlci0+
dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKKysgICAgICAgIGF1
dG8gdHlwZSA9IGJ1ZmZlci0+dHlwZSgpOworKyAgICAgICAgaWYgKHR5cGUgIT0gVmlkZW9GcmFt
ZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYgdHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkgeworKyAgICAgICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIlZpZGVvIGZyYW1lIGJ1
ZmZlciB0eXBlIGlzIG5vdCBleHBlY3RlZC4iOworKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworKyAgICAgICAgfQorKworKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVs
QnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0Zy
YW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJ
MDEwKTsKKysgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKKysgICAgICAgICAgICBSVENfTE9H
KFdBUk5JTkcpIDw8ICJQaXhlbCBidWZmZXIgY3JlYXRpb24gZmFpbGVkLiI7CisrICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAodHlwZSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFt
ZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgICAg
IGVsc2UKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5H
ZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICsgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICsg
ICAgfQogKwotKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1
ZmZlcio+KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9i
dWZmZXIoKTsKKysgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJhbWVC
dWZmZXIqPihidWZmZXIuZ2V0KCkpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogKyAgICBpZiAo
IVtmcmFtZUJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCiAr
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICsKICsgICAgYXV0byAqcnRjUGl4ZWxCdWZmZXIgPSAo
UlRDQ1ZQaXhlbEJ1ZmZlciAqKWZyYW1lQnVmZmVyOwotKyAgICByZXR1cm4gcnRjUGl4ZWxCdWZm
ZXIucGl4ZWxCdWZmZXI7CisrICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/
IENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0
cjsKICt9CiArCiArfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tCmluZGV4IDBjNzFlMWRiMTBmYTQzN2E3YzAwNDNkMzY0ZjQ0YmY3MjM3MTFjOTcu
LjA1Yjk0YjYyM2RmZmIzOGYwOGExZjUxZDI5ZGNlMjA4NTIyNjRiYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsOCArMTE3
LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgcmV0dXJuIG1fYmxhY2tGcmFt
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4
ZWxCdWZmZXI7Ci0gICAgcmV0dXJuIHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUs
IFt0aGlzLCAmbmV3UGl4ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIHJl
dHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFtd
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5
cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9
IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCBidWZmZXJUeXBlKTsKICAgICAg
ICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEzMCw5ICsxMjksOCBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyRnJvbVZpZAogICAgICAgICAgICAgRVJS
T1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEg
cGl4ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIG5ld1BpeGVsQnVmZmVyID0gYWRvcHRDRihwaXhl
bEJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBuZXdQaXhlbEJ1ZmZlci5nZXQoKTsKLSAgICB9KTsK
KyAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAgIH0pKTsKIH0KIAogdm9pZCBSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggMjhlOWM2OTgyYWM1NDY5ZWU5NWZhYjg2ZGY3
NmU2Y2YzOGU5MjRmYi4uZTkyN2E5Y2ZmOTYwNWJkYjkzM2NhMWIyYjc2OWUxZjYxYzAxODMyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQzMSw4ICs0MzEsNyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6
ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgog
ICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX0VSUk9SOwogCi0gICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG5ld1BpeGVs
QnVmZmVyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSB3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZy
YW1lKGZyYW1lLCBbJm5ld1BpeGVsQnVmZmVyXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKKyAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJv
bUZyYW1lKGZyYW1lLCBbXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVm
ZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKICAgICAgICAgT1NUeXBl
IHBvb2xCdWZmZXJUeXBlOwogICAgICAgICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKICAgICAgICAg
Y2FzZSB3ZWJydGM6OkJ1ZmZlclR5cGU6Okk0MjA6CkBAIC00NDUsOSArNDQ0LDggQEAgaW50MzJf
dCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdl
YnJ0Yzo6VmlkZW9GcmFtZSYKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IFdlYkNvcmU6
OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbVBvb2wocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgICAgcmV0
dXJuIG5ld1BpeGVsQnVmZmVyLmdldCgpOwotICAgIH0pOworICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChwaXhlbEJ1ZmZlclBvb2wpLmxlYWtSZWYoKTsK
KyAgICB9KSk7CiAKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX0VSUk9SOwpAQCAtNDU1LDggKzQ1Myw4IEBAIGludDMyX3QgTGliV2ViUlRD
Q29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVv
RnJhbWUmCiAgICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVs
QnVmZmVyLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwg
dG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSkpOwogICAgIGlmICgh
c2FtcGxlKSB7CiAgICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgY3Vy
cmVudGx5IHdlIGhhdmUgbm9uIEJHUkEgZm9yIG11dGVkIGZyYW1lcyBhdCBsZWFzdC4KLSAgICAg
ICAgbmV3UGl4ZWxCdWZmZXIgPSBjb252ZXJ0VG9CR1JBKHBpeGVsQnVmZmVyKTsKLSAgICAgICAg
c2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShuZXdQaXhlbEJ1ZmZlci5nZXQoKSwg
TWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFT
YW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKKyAgICAgICAgYXV0byBjb252
ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRUb0JHUkEocGl4ZWxCdWZmZXIuZ2V0KCkpOworICAg
ICAgICBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKGNvbnZlcnRlZFBpeGVsQnVm
ZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAw
KSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSkpOwogICAgIH0K
IAogICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCAqc2FtcGxlLCBmcmFtZS50
aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436778</attachid>
            <date>2021-08-30 09:17:27 -0700</date>
            <delta_ts>2021-08-30 10:25:43 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-229661-20210830091745.patch</filename>
            <type>text/plain</type>
            <size>30769</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjN2UwZTA2ZDgzNmIxMmFlMTFlMTQ4MDEzNjQ3ZDZmYjQ0NTAzYzMxLi5iM2M1
N2NmMjdkZDkzNjE2YWQ0NzMyYzk4ZGVhZWM3NzUxNTE4Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wOC0yOSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdIExlYWsgb3Igb3Zl
ci1yZWxlYXNlIG9mIENGUGl4ZWxCdWZmZXJSZWYgcmV0dXJuZWQgZnJvbSB3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIy
OTY2MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNTA3ODI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5l
eHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAg
IC0gVXBkYXRlIGV4cG9ydCBzeW1ib2wgZm9yIHJlbmFtZSBmcm9tIHBpeGVsQnVmZmVyRnJvbUZy
YW1lKCkgdG8KKyAgICAgICAgICBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgpLgorCisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIGNhbGwgcmVuYW1lZCBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgp
IGZ1bmN0aW9uLgorICAgICAgICAgIFRoaXMgbWV0aG9kIGFscmVhZHkgcmVsZWFzZWQgdGhlIHJl
dHVybmVkIENGUGl4ZWxCdWZmZXJSZWYsIHNvCisgICAgICAgICAgaXQgZGlkIG5vdCByZXF1aXJl
IGFueSBtb3JlIGNoYW5nZXMuICBBbHNvLCBpdHMgZnVuY3RvcgorICAgICAgICAgIHJldHVybmVk
IGEgKzEgcmV0YWluZWQgQ0ZQaXhlbEJ1ZmZlclJlZiwgc28gaXQgZGlkIG5vdCBuZWVkIHRvCisg
ICAgICAgICAgY2hhbmdlLCBlaXRoZXIuCisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgIC0gSW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ0ZCYXNlLmg+IGZvciBDRl9SRVRVUk5TX1JFVEFJTkVELgorICAgICAgICAod2VicnRjOjpj
cmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSk6CisgICAgICAgIC0gTmFtZSBjb25zdCBzdGQ6OmZ1
bmN0aW9uPD4mIGFzIGBjcmVhdGVQaXhlbEJ1ZmZlcmAgdG8gZGVzY3JpYmUKKyAgICAgICAgICBp
dHMgYmVoYXZpb3IuCisgICAgICAgIC0gQWRkIENGX1JFVFVSTlNfUkVUQUlORUQgdG8gZGVzY3Jp
YmUgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlCisgICAgICAgICAgcmV0dXJuZWQgb2JqZWN0Lgor
ICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06Cisg
ICAgICAgICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgLSBSZW5hbWUg
dG8gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKS4KKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAgICAgICAtIFJlbmFtZSBmcm9tIHBpeGVsQnVmZmVy
RnJvbUZyYW1lKCkuCisgICAgICAgIC0gUmVuYW1lIGNvbnN0IHN0ZDo6ZnVuY3Rpb248PiYgYXJn
dW1lbnQgdG8gYGNyZWF0ZVBpeGVsQnVmZmVyYAorICAgICAgICAgIHRvIGRlc2NyaWJlIGl0cyBi
ZWhhdmlvciBvZiByZXR1cm5pbmcgYSArMSByZXRhaW5lZAorICAgICAgICAgIENWUGl4ZWxCdWZm
ZXJSZWYuCisgICAgICAgIC0gRml4IGxhc3QgcmV0dXJuIHN0YXRlbWVudCB0byByZXR1cm4gYSAr
MSByZXRhaW5lZAorICAgICAgICAgIENGUGl4ZWxCdWZmZXJSZWYgaWYgaXQgaXMgbm90IG51bGxw
dHIuCisKKyAgICAgICAgKiBXZWJLaXQvbGlid2VicnRjLmRpZmY6CisgICAgICAgIC0gVXBkYXRl
IGRpZmYgZm9yIFdlYktpdFV0aWxpdGllcy57aHxtbX0uCisKIDIwMjEtMDgtMTkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENE
dGxzVHJhbnNwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MGFmZWU1NTE5M2RlNzhkODc4MzQ3ODQ2NTYz
OTQ0M2E0OTE3ZS4uZGMzMzgzMzc1YzJkZjFlZjZhNTU4Njc1NDIyNjliNjI2MDUxNjM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ug
b2YgQ0ZQaXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisKIDIwMjEtMDgtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gTW92ZSBjb250ZW50IGJ1aWxkZXIgZnVuY3Rpb25hbGl0eSB0byBhIGRlZGlj
YXRlZCBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZDU0YTEwYzk2ZGQ3Yjc5OTVkMjVkZjkxOWQ3NDk5NmQz
YTBiMzRmLi41ZTI5MmM4OGJhZTZjYjE5OTc3MDM2MGMxODZlNmQzYWI3ZWFmMjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ugb2YgQ0ZQ
aXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisgICAgICAgIC0gRGVjbGFyZSBsb2NhbCBgY29udmVydGVkUGl4ZWxCdWZmZXJgIHZhcmlhYmxl
IHNpbmNlCisgICAgICAgICAgYG5ld1BpeGVsQnVmZmVyYCB3YXMgcmVtb3ZlZCBmb3IgdGhlIGFi
b3ZlIGNoYW5nZXMuCisKIDIwMjEtMDgtMjcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggc3RkOjpvcHRpb25hbDw+IHN0cmlwcGluZyBpbiBNZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Mu
ZXhwCmluZGV4IDczYmNmMzg2OGNlYWEwNzhjYTRmNTg5ZWVjZWY5Y2E5N2Y0NjdhOTYuLjBkMzVj
ZTQ5YzM3ZGNmNzhhZGU0YzI3YmE5YTllYjgxMjYwNjg4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlP
Uy5leHAKQEAgLTk3LDE0ICs5NywxNCBAQCBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnlFdgogX19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJG
YWN0b3J5RXYKIF9fWk42d2VicnRjMjdTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UxNlJlbW92
ZUNhbmRpZGF0ZXNFUktOU3QzX18xNnZlY3RvcklON2NyaWNrZXQ5Q2FuZGlkYXRlRU5TMV85YWxs
b2NhdG9ySVM0X0VFRUUKIF9fWk5LNndlYnJ0YzIxSWNlQ2FuZGlkYXRlSW50ZXJmYWNlMTBzZXJ2
ZXJfdXJsRXYKK19fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgog
X19aTjZ3ZWJydGMyMHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42d2VicnRjMjZjcmVhdGVX
ZWJLaXREZWNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18xMldl
YktpdFZQOVZUQkUKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9yeUVOU18x
MFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRMb3dMYXRlbmN5RQogX19a
TjZ3ZWJydGMyOXNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA5
RGVjb2RlckV2Ci1fX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVv
RnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVF
RUVFCi1fX1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKK19fWk42
d2VicnRjMjZjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVSS05T
dDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKIF9fWk4z
cnRjMjRCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkxOUNyZWF0ZUFzeW5jUmVzb2x2ZXJFdgogX19a
TjNydGMyNEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeUMyRXYKIF9fWk4zcnRjMjRCYXNpY1BhY2tl
dFNvY2tldEZhY3RvcnlEMkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggNzNi
Y2YzODY4Y2VhYTA3OGNhNGY1ODllZWNlZjljYTk3ZjQ2N2E5Ni4uMGQzNWNlNDljMzdkY2Y3OGFk
ZTRjMjdiYTlhOWViODEyNjA2ODhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApA
QCAtOTcsMTQgKzk3LDE0IEBAIF9fWk42d2VicnRjMzJDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVy
RmFjdG9yeUV2CiBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlF
dgogX19aTjZ3ZWJydGMyN1Nlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTE2UmVtb3ZlQ2FuZGlk
YXRlc0VSS05TdDNfXzE2dmVjdG9ySU43Y3JpY2tldDlDYW5kaWRhdGVFTlMxXzlhbGxvY2F0b3JJ
UzRfRUVFRQogX19aTks2d2VicnRjMjFJY2VDYW5kaWRhdGVJbnRlcmZhY2UxMHNlcnZlcl91cmxF
dgorX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCiBfX1pONndl
YnJ0YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdERl
Y29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzEyV2ViS2l0VlA5
VlRCRQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0
SDI2NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExvd0xhdGVuY3lFCiBfX1pONndlYnJ0
YzI5c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVy
V2ViS2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVy
RXYKLV9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVS
S05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKLV9f
Wk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMy
NmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThm
dW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjNydGMyNEJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeTE5Q3JlYXRlQXN5bmNSZXNvbHZlckV2CiBfX1pOM3J0YzI0
QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5QzJFdgogX19aTjNydGMyNEJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeUQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCA3M2JjZjM4NjhjZWFhMDc4
Y2E0ZjU4OWVlY2VmOWNhOTdmNDY3YTk2Li4wZDM1Y2U0OWMzN2RjZjc4YWRlNGMyN2JhOWE5ZWI4
MTI2MDY4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC05NywxNCArOTcsMTQgQEAg
X19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RXYKIF9fWk42d2Vi
cnRjMzJDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUV2CiBfX1pONndlYnJ0YzI3U2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlMTZSZW1vdmVDYW5kaWRhdGVzRVJLTlN0M19fMTZ2ZWN0
b3JJTjdjcmlja2V0OUNhbmRpZGF0ZUVOUzFfOWFsbG9jYXRvcklTNF9FRUVFCiBfX1pOSzZ3ZWJy
dGMyMUljZUNhbmRpZGF0ZUludGVyZmFjZTEwc2VydmVyX3VybEV2CitfX1pONndlYnJ0YzE4cGl4
ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlv
blN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2
Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlF
TlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVF
bmNvZGVyQWxsb3dlZEViCiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYK
IF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgotX19aTjZ3ZWJydGMyMHBp
eGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklG
UDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQotX19aTjZ3ZWJydGMxOHBpeGVsQnVm
ZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCitfX1pONndlYnJ0YzI2Y3JlYXRlUGl4ZWxCdWZmZXJG
cm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVm
ZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5MTlDcmVhdGVBc3luY1Jlc29sdmVyRXYKIF9fWk4zcnRjMjRCYXNpY1BhY2tldFNvY2tldEZh
Y3RvcnlDMkV2CiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5RDJFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCmluZGV4
IGYwYmE5ZGY0MzQ0NzNlN2YzNjgzNGRmNzA4NDcyYmEwMDIyMWQ5NGUuLmI3NWM0MjkwOWY3YjQ5
NmM3NzFmZmM4MDk1OGM4ZTUyMDEyZmNhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVy
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2MCw3IEBAIE9TU3RhdHVz
IFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAKIGludDMy
X3QgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogewot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNd
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgQnVmZmVyVHlwZSB0eXBlKSAtPiBDVlBpeGVs
QnVmZmVyUmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5
cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQ
b29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVy
VHlwZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMu
aAppbmRleCA3NGQzNzY4NWI0NzQ2NTNmOTRkNzhjNjE4YjdmNWNkMzgyM2Y5OWNmLi4zZWEwNGZk
NThmNGM2NWZlYzM1NzViYTUwMWQzNjA5NWI2OWE2M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS9zY29wZWRfcmVmcHRyLmgi
CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KIAogdXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKQEAgLTQ2
LDcgKzQ3LDcgQEAgdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKIGJv
b2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1ZmZlclR5
cGUgeyBJNDIwLCBJMDEwIH07Ci1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYo
c2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYpOworQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQ
aXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBp
eGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4
IDI3Y2FlOTc4MjI3ZmVlYWI5MGE0YjZmZmM3ZjVlZmNiZjA2NDE1ZmUuLjNhNjRiMDE0ZDBmMTdk
MmNhZDgyNDU1ZWIyNjU4NTZiZjk1ZTcyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBDb3B5VmlkZW9G
cmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNlKiBmcmFt
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJv
bUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4
ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgbWFrZVBpeGVsQnVmZmVy
KQorQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQogewogICAgIGF1dG8g
YnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CiAgICAgaWYgKGJ1ZmZlci0+dHlw
ZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVy
KGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsK
KyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lk
dGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKICAgICAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKSA8PCAiUGl4ZWwg
YnVmZmVyIGNyZWF0aW9uIGZhaWxlZC4iOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNzIsNyArMTcyLDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShj
b25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChSVENDVlBpeGVsQnVmZmVy
ICopZnJhbWVCdWZmZXI7Ci0gICAgcmV0dXJuIHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyOwor
ICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/IENWUGl4ZWxCdWZmZXJSZXRh
aW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYKaW5kZXgg
MzA5MjExNjM4M2MzNWNlYTUyZjliODZmMDljMGUwZGU0YjI3NTZkZC4uOGJjYTNjZTA5MTg1MjJm
MTcxZWI2M2NhYTVmMDFjMDRiM2ZhOGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmCkBAIC05NDQsOSArOTQ0LDkgQEAgbmV3IGZp
bGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogLS0tIC9kZXYv
bnVsbAogKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAotQEAgLTAsMCArMSw1NCBAQAorQEAgLTAsMCArMSw1
MyBAQAogKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiArICoKICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3Mywy
OSArOTczLDI4IEBAIGluZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogKyNwcmFnbWEgb25j
ZQogKwogKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCi0rI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCi0rI2luY2x1ZGUgIndlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIgotKyNpbmNsdWRlICJ3ZWJydGMvbWVk
aWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKKysjaW5jbHVkZSAiYXBpL3Nj
b3BlZF9yZWZwdHIuaCIKKysjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CisrI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiArCi0rdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhl
bEJ1ZmZlclJlZjsKKyt1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIq
OwogKwogK25hbWVzcGFjZSB3ZWJydGMgewogKwotK2NsYXNzIFZpZGVvRGVjb2RlckZhY3Rvcnk7
Ci0rY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKICtjbGFzcyBWaWRlb0ZyYW1lOwogKwotK2Vu
dW0gY2xhc3MgV2ViS2l0Q29kZWNTdXBwb3J0IHsgSDI2NCwgSDI2NEFuZFZQOCB9OwotKwotK3N0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVu
Y29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCk7Ci0rc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0
Q29kZWNTdXBwb3J0KTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjUgeyBPZmYsIE9uIH07CisrZW51
bSBjbGFzcyBXZWJLaXRWUDkgeyBPZmYsIFByb2ZpbGUwLCBQcm9maWxlMEFuZDIgfTsKKytlbnVt
IGNsYXNzIFdlYktpdFZQOVZUQiB7IE9mZiwgT24gfTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjRM
b3dMYXRlbmN5IHsgT2ZmLCBPbiB9OwogKwogK3ZvaWQgc2V0QXBwbGljYXRpb25TdGF0dXMoYm9v
bCBpc0FjdGl2ZSk7CiArCiArdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29s
KTsKICtib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKICsKLStDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYpOworK2VudW0gY2xh
c3MgQnVmZmVyVHlwZSB7IEk0MjAsIEkwMTAgfTsKKytDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBp
eGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4
ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CiArcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYp
OwogKwogK30KQEAgLTEwMDQsOSArMTAwMyw5IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRl
eCAwMDAwMDAwMDAwMC4uNjVlZWZhMzZmMmQKIC0tLSAvZGV2L251bGwKICsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCi1AQCAtMCwwICsxLDE4NSBAQAorQEAgLTAsMCArMSwxNzggQEAKICsvKgotKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKyAq
CiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMyLDY4ICsxMDMxLDE1IEBAIGlu
ZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKwogKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRp
ZXMuaCIKICsKLSsvLyNpbmNsdWRlICJDb21tb24vUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2Vy
dmVyLmgiCi0rI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCi0rCiArI2luY2x1
ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogKyNpbmNsdWRlICJuYXRpdmUvc3JjL29iamNf
ZnJhbWVfYnVmZmVyLmgiCisrI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICsjaW5jbHVk
ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgotKyNp
bmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCi0rI2luY2x1ZGUgIkZyYW1ld29yay9I
ZWFkZXJzL1dlYlJUQy9SVENWaWRlb0NvZGVjRmFjdG9yeS5oIgotKyNpbmNsdWRlICJGcmFtZXdv
cmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZS5oIgorKyNpbmNsdWRlICJsaWJ5dXYvY3B1
X2lkLmgiCisrI2luY2x1ZGUgImxpYnl1di9yb3cuaCIKICsjaW5jbHVkZSAiRnJhbWV3b3JrL0hl
YWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKLSsjaW5jbHVkZSAiRnJhbWV3b3Jr
L05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0rI2luY2x1ZGUgIkZyYW1ld29y
ay9OYXRpdmUvYXBpL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgotKy8qCi0rI2lmICFkZWZpbmVk
KFdFQlJUQ19JT1MpCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1VJ
QXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciIpKSkKLStAaW50ZXJmYWNlIFJUQ1VJQXBwbGljYXRp
b25TdGF0dXNPYnNlcnZlciA6IE5TT2JqZWN0Ci0rCi0rKyAoaW5zdGFuY2V0eXBlKXNoYXJlZElu
c3RhbmNlOwotKysgKHZvaWQpcHJlcGFyZUZvclVzZTsKLSsKLSstIChCT09MKWlzQXBwbGljYXRp
b25BY3RpdmU7Ci0rCi0rQGVuZAotKyNlbmRpZgotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENVSUFw
cGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgewotKyAgICBCT09MIF9pc0FjdGl2ZTsKLSt9Ci0rCi0r
KyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlIHsKLSsgICAgc3RhdGljIGlkIHNoYXJlZElu
c3RhbmNlOwotKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSsgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW3Nl
bGYgYWxsb2NdIGluaXRdOwotKyAgICB9KTsKKysjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2
L2luY2x1ZGUvbGlieXV2LmgiCiArCi0rICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKLSt9Ci0r
Ci0rKyAodm9pZClwcmVwYXJlRm9yVXNlIHsKLSsgICAgX191bnVzZWQgUlRDVUlBcHBsaWNhdGlv
blN0YXR1c09ic2VydmVyICpvYnNlcnZlciA9IFtzZWxmIHNoYXJlZEluc3RhbmNlXTsKLSt9Ci0r
Ci0rLSAoaWQpaW5pdCB7Ci0rICAgIF9pc0FjdGl2ZSA9IFlFUzsKLSsgICAgcmV0dXJuIHNlbGY7
Ci0rfQotKwotKy0gKHZvaWQpc2V0QWN0aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gWUVTOwotK30K
LSsKLSstICh2b2lkKXNldEluYWN0aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gTk87Ci0rfQotKwot
Ky0gKEJPT0wpaXNBcHBsaWNhdGlvbkFjdGl2ZSB7Ci0rICAgIHJldHVybiBfaXNBY3RpdmU7Ci0r
fQotKwotK0BlbmQKLSsqLwogK25hbWVzcGFjZSB3ZWJydGMgewogKwogK3ZvaWQgc2V0QXBwbGlj
YXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2ZSkKQEAgLTExMDYsNDAgKzEwNTIsMTMgQEAgaW5kZXgg
MDAwMDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiArICovCiArfQogKwotK3N0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdl
YktpdENvZGVjU3VwcG9ydCBjb2RlY1N1cHBvcnQpCi0rewotKyNpZiBFTkFCTEVfVkNQX0VOQ09E
RVIKLSsgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10gewotKyAgICAgICAgd2VicnRjOjpWUE1vZHVsZUluaXRpYWxpemUo
KTsKLSsgICAgfSk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBPYmpDVG9OYXRpdmVWaWRlb0VuY29k
ZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDgg
PyBbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlk
ZW9FbmNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9Ci0rCi0rc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3Rv
cnkoV2ViS2l0Q29kZWNTdXBwb3J0IGNvZGVjU3VwcG9ydCkKLSt7Ci0rICAgIHJldHVybiBPYmpD
VG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1
cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IGFsbG9j
XSBpbml0XSA6IFtbUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9
Ci0rCi0rc3RhdGljIGJvb2wgaDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSB0cnVlOwotK3Zv
aWQgc2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbCBhbGxvd2VkKQotK3sKLSsgICAg
aDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSBhbGxvd2VkOwotK30KLSsKLStib29sIGlzSDI2
NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKQotK3sKLSsgICAgcmV0dXJuIGgyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkOwotK30KLSsKICtydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0Zy
YW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
cikKICt7CiArICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKmZyYW1lQnVmZmVyID0gW1tSVENDVlBpeGVs
QnVmZmVyIGFsbG9jXSBpbml0V2l0aFBpeGVsQnVmZmVyOnBpeGVsQnVmZmVyXTsKICsgICAgcmV0
dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihmcmFtZUJ1ZmZl
cik7CiArfQogKwotK3N0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUs
IENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7Cisrc3RhdGljIGJvb2wgQ29weVZpZGVv
RnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZSogZnJh
bWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7CiArICAgIFJUQ19EQ0hFQ0socGl4
ZWxfYnVmZmVyKTsKICsgICAgUlRDX0RDSEVDSyhDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRU
eXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5h
ckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZl
cikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UpOwog
KyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1
ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CkBAIC0xMTQ4
LDExICsxMDY3LDI2IEBAIGluZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKyAgICBpZiAo
Q1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbF9idWZmZXIsIDApICE9IGtDVlJldHVy
blN1Y2Nlc3MpCiArICAgICAgICByZXR1cm4gZmFsc2U7CiArCisrICAgIGF1dG8gc3JjX3dpZHRo
X3kgPSBmcmFtZS0+d2lkdGgoKTsKKysgICAgYXV0byBzcmNfaGVpZ2h0X3kgPSBmcmFtZS0+aGVp
Z2h0KCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJhbWUtPkNocm9tYVdpZHRoKCk7Cisr
ICAgIGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJvbWFIZWlnaHQoKTsKKysKICsgICAg
dWludDhfdCogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVy
R2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCkpOwogKyAgICBpbnQgZHN0X3N0
cmlkZV95ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIs
IDApOworKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworKyAgICBhdXRvIGRzdF9oZWlnaHRfeSA9IENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCk7CiArCiArICAgIHVpbnQ4X3QqIGRz
dF91diA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRk
cmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKSk7CiArICAgIGludCBkc3Rfc3RyaWRlX3V2ID0g
Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworKyAg
ICBhdXRvIGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxf
YnVmZmVyLCAxKTsKKysgICAgYXV0byBkc3RfaGVpZ2h0X3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEhl
aWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKysKKysgICAgaWYgKHNyY193aWR0aF95ICE9
IGRzdF93aWR0aF95CisrICAgICAgICB8fCBzcmNfaGVpZ2h0X3kgIT0gZHN0X2hlaWdodF95Cisr
ICAgICAgICB8fCBzcmNfd2lkdGhfdXYgIT0gZHN0X3dpZHRoX3V2CisrICAgICAgICB8fCBzcmNf
aGVpZ2h0X3V2ICE9IGRzdF9oZWlnaHRfdXYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CiArCiAr
ICAgIGludCByZXN1bHQgPSBsaWJ5dXY6Okk0MjBUb05WMTIoCiArICAgICAgICBmcmFtZS0+RGF0
YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwKQEAgLTExNjksMjQgKzExMDMsODIgQEAgaW5kZXggMDAw
MDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiArICAgIHJldHVybiB0cnVlOwogK30KICsKLSsKLStDVlBp
eGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1l
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYg
bWFrZVBpeGVsQnVmZmVyKQorK3N0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihjb25zdCB3ZWJydGM6OkkwMTBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lLCBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsX2J1ZmZlcikKICt7Ci0rICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIo
KS0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSsgICAgICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBm
cmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworKyAgICBSVENfRENIRUNLKHBp
eGVsX2J1ZmZlcik7CisrICAgIFJUQ19EQ0hFQ0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0
VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxh
bmFyVmlkZW9SYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1
ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2Up
OworKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisrICAg
IFJUQ19EQ0hFQ0tfRVEoQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbF9idWZmZXIs
IDApLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1lLT53aWR0aCgpKSk7CiArCi0rICAgICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVy
LT5oZWlnaHQoKSk7Ci0rICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCi0rICAgICAgICAgICAgQ29w
eVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT5HZXRJ
NDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgaWYgKENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJl
c3MocGl4ZWxfYnVmZmVyLCAwKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorKyAgICAgICAgcmV0dXJu
IGZhbHNlOworKworKyAgICBhdXRvIHNyY195ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZyYW1l
LT5EYXRhWSgpKTsKKysgICAgYXV0byBzcmNfdSA9IGNvbnN0X2Nhc3Q8dWludDE2X3QqPihmcmFt
ZS0+RGF0YVUoKSk7CisrICAgIGF1dG8gc3JjX3YgPSBjb25zdF9jYXN0PHVpbnQxNl90Kj4oZnJh
bWUtPkRhdGFWKCkpOworKyAgICBhdXRvIHNyY193aWR0aF95ID0gZnJhbWUtPndpZHRoKCk7Cisr
ICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdodCgpOworKyAgICBhdXRvIHNyY19z
dHJpZGVfeSA9IGZyYW1lLT5TdHJpZGVZKCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJh
bWUtPkNocm9tYVdpZHRoKCk7CisrICAgIGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJv
bWFIZWlnaHQoKTsKKysgICAgYXV0byBzcmNfc3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpOwor
KyAgICBhdXRvIHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCk7CisrCisrICAgIGF1dG8q
IGRzdF95ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNl
QWRkcmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSk7CisrICAgIGF1dG8gZHN0X3N0cmlkZV95
ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApIC8g
MjsKKysgICAgYXV0byBkc3Rfd2lkdGhfeSA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUo
cGl4ZWxfYnVmZmVyLCAwKTsKKysgICAgYXV0byBkc3RfaGVpZ2h0X3kgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworKworKyAgICBhdXRvKiBkc3RfdXYg
PSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNz
T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpKTsKKysgICAgYXV0byBkc3Rfc3RyaWRlX3V2ID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpIC8gMjsKKysg
ICAgYXV0byBkc3Rfd2lkdGhfdXYgPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMSk7CisrICAgIGF1dG8gZHN0X2hlaWdodF91diA9IENWUGl4ZWxCdWZmZXJHZXRI
ZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSk7CisrCisrICAgIGlmIChzcmNfd2lkdGhfeSAh
PSBkc3Rfd2lkdGhfeQorKyAgICAgICAgfHwgc3JjX2hlaWdodF95ICE9IGRzdF9oZWlnaHRfeQor
KyAgICAgICAgfHwgc3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorKyAgICAgICAgfHwgc3Jj
X2hlaWdodF91diAhPSBkc3RfaGVpZ2h0X3V2KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKwor
KyAgICBsaWJ5dXY6OkkwMTBUb1AwMTAoc3JjX3ksIHNyY19zdHJpZGVfeSwKKysgICAgICAgICAg
ICAgICAgICAgICAgIHNyY191LCBzcmNfc3RyaWRlX3UsCisrICAgICAgICAgICAgICAgICAgICAg
ICBzcmNfdiwgc3JjX3N0cmlkZV92LAorKyAgICAgICAgICAgICAgICAgICAgICAgZHN0X3ksIGRz
dF9zdHJpZGVfeSwgZHN0X3V2LCBkc3Rfc3RyaWRlX3V2LAorKyAgICAgICAgICAgICAgICAgICAg
ICAgc3JjX3dpZHRoX3ksIHNyY19oZWlnaHRfeSk7CisrCisrICAgIENWUGl4ZWxCdWZmZXJVbmxv
Y2tCYXNlQWRkcmVzcyhwaXhlbF9idWZmZXIsIDApOworKyAgICByZXR1cm4gdHJ1ZTsKKyt9Cisr
CisrQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQorK3sKKysgICAgYXV0
byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKysgICAgaWYgKGJ1ZmZlci0+
dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKKysgICAgICAgIGF1
dG8gdHlwZSA9IGJ1ZmZlci0+dHlwZSgpOworKyAgICAgICAgaWYgKHR5cGUgIT0gVmlkZW9GcmFt
ZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYgdHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkgeworKyAgICAgICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIlZpZGVvIGZyYW1lIGJ1
ZmZlciB0eXBlIGlzIG5vdCBleHBlY3RlZC4iOworKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworKyAgICAgICAgfQorKworKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVs
QnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0Zy
YW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJ
MDEwKTsKKysgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKKysgICAgICAgICAgICBSVENfTE9H
KFdBUk5JTkcpIDw8ICJQaXhlbCBidWZmZXIgY3JlYXRpb24gZmFpbGVkLiI7CisrICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAodHlwZSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFt
ZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgICAg
IGVsc2UKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5H
ZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICsgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICsg
ICAgfQogKwotKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1
ZmZlcio+KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9i
dWZmZXIoKTsKKysgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJhbWVC
dWZmZXIqPihidWZmZXIuZ2V0KCkpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogKyAgICBpZiAo
IVtmcmFtZUJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCiAr
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICsKICsgICAgYXV0byAqcnRjUGl4ZWxCdWZmZXIgPSAo
UlRDQ1ZQaXhlbEJ1ZmZlciAqKWZyYW1lQnVmZmVyOwotKyAgICByZXR1cm4gcnRjUGl4ZWxCdWZm
ZXIucGl4ZWxCdWZmZXI7CisrICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/
IENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0
cjsKICt9CiArCiArfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tCmluZGV4IDBjNzFlMWRiMTBmYTQzN2E3YzAwNDNkMzY0ZjQ0YmY3MjM3MTFjOTcu
LjUyMWRlN2E5NzRlZWMyMGU5OTc0YzA4YWQzOWI2Y2VmN2MyMWY3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsOCArMTE3
LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgcmV0dXJuIG1fYmxhY2tGcmFt
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4
ZWxCdWZmZXI7Ci0gICAgcmV0dXJuIHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUs
IFt0aGlzLCAmbmV3UGl4ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIHJl
dHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0
aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZm
ZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBv
b2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CiAg
ICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMzAsOSArMTI5LDggQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAg
IEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCBjcmVhdGlu
ZyBhIHBpeGVsIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0YXR1cyk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yo
cGl4ZWxCdWZmZXIpOwotICAgICAgICByZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7Ci0gICAg
fSk7CisgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKKyAgICB9KSk7CiB9CiAKIHZvaWQgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDI4ZTljNjk4MmFjNTQ2OWVlOTVmYWI4
NmRmNzZlNmNmMzhlOTI0ZmIuLmU5MjdhOWNmZjk2MDViZGI5MzNjYTFiMmI3NjllMWY2MWMwMTgz
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MzEsOCArNDMxLDcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2Rl
Y3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19W
SURFT19DT0RFQ19FUlJPUjsKIAotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBuZXdQ
aXhlbEJ1ZmZlcjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZy
b21GcmFtZShmcmFtZSwgWyZuZXdQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7
CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZl
ckZyb21GcmFtZShmcmFtZSwgW10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6
OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIE9T
VHlwZSBwb29sQnVmZmVyVHlwZTsKICAgICAgICAgc3dpdGNoIChidWZmZXJUeXBlKSB7CiAgICAg
ICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJUeXBlOjpJNDIwOgpAQCAtNDQ1LDkgKzQ0NCw4IEBAIGlu
dDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCB3ZWJydGM6OlZpZGVvRnJhbWUmCiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgbmV3UGl4ZWxCdWZmZXIgPSBXZWJD
b3JlOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21Qb29sKHBpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAg
IHJldHVybiBuZXdQaXhlbEJ1ZmZlci5nZXQoKTsKLSAgICB9KTsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbVBvb2wocGl4ZWxCdWZmZXJQb29sKS5sZWFrUmVm
KCk7CisgICAgfSkpOwogCiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19FUlJPUjsKQEAgLTQ1NSw4ICs0NTMsOCBAQCBpbnQzMl90IExpYldl
YlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpW
aWRlb0ZyYW1lJgogICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShw
aXhlbEJ1ZmZlciwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAw
MCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKICAgICBp
ZiAoIXNhbXBsZSkgewogICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhpcyBjb2RlIHBhdGgs
IGN1cnJlbnRseSB3ZSBoYXZlIG5vbiBCR1JBIGZvciBtdXRlZCBmcmFtZXMgYXQgbGVhc3QuCi0g
ICAgICAgIG5ld1BpeGVsQnVmZmVyID0gY29udmVydFRvQkdSQShwaXhlbEJ1ZmZlcik7Ci0gICAg
ICAgIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobmV3UGl4ZWxCdWZmZXIuZ2V0
KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01l
ZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSk7CisgICAgICAgIGF1dG8g
Y29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0VG9CR1JBKHBpeGVsQnVmZmVyLmdldCgpKTsK
KyAgICAgICAgc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShjb252ZXJ0ZWRQaXhl
bEJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAw
MDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKICAg
ICB9CiAKICAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJh
bWUudGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7Cg==
</data>
<flag name="commit-queue"
          id="459865"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436790</attachid>
            <date>2021-08-30 10:21:56 -0700</date>
            <delta_ts>2021-08-31 17:47:16 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-229661-20210830102214.patch</filename>
            <type>text/plain</type>
            <size>30832</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjN2UwZTA2ZDgzNmIxMmFlMTFlMTQ4MDEzNjQ3ZDZmYjQ0NTAzYzMxLi5iM2M1
N2NmMjdkZDkzNjE2YWQ0NzMyYzk4ZGVhZWM3NzUxNTE4Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wOC0yOSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdIExlYWsgb3Igb3Zl
ci1yZWxlYXNlIG9mIENGUGl4ZWxCdWZmZXJSZWYgcmV0dXJuZWQgZnJvbSB3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIy
OTY2MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNTA3ODI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5l
eHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAg
IC0gVXBkYXRlIGV4cG9ydCBzeW1ib2wgZm9yIHJlbmFtZSBmcm9tIHBpeGVsQnVmZmVyRnJvbUZy
YW1lKCkgdG8KKyAgICAgICAgICBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgpLgorCisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIGNhbGwgcmVuYW1lZCBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgp
IGZ1bmN0aW9uLgorICAgICAgICAgIFRoaXMgbWV0aG9kIGFscmVhZHkgcmVsZWFzZWQgdGhlIHJl
dHVybmVkIENGUGl4ZWxCdWZmZXJSZWYsIHNvCisgICAgICAgICAgaXQgZGlkIG5vdCByZXF1aXJl
IGFueSBtb3JlIGNoYW5nZXMuICBBbHNvLCBpdHMgZnVuY3RvcgorICAgICAgICAgIHJldHVybmVk
IGEgKzEgcmV0YWluZWQgQ0ZQaXhlbEJ1ZmZlclJlZiwgc28gaXQgZGlkIG5vdCBuZWVkIHRvCisg
ICAgICAgICAgY2hhbmdlLCBlaXRoZXIuCisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgIC0gSW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ0ZCYXNlLmg+IGZvciBDRl9SRVRVUk5TX1JFVEFJTkVELgorICAgICAgICAod2VicnRjOjpj
cmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSk6CisgICAgICAgIC0gTmFtZSBjb25zdCBzdGQ6OmZ1
bmN0aW9uPD4mIGFzIGBjcmVhdGVQaXhlbEJ1ZmZlcmAgdG8gZGVzY3JpYmUKKyAgICAgICAgICBp
dHMgYmVoYXZpb3IuCisgICAgICAgIC0gQWRkIENGX1JFVFVSTlNfUkVUQUlORUQgdG8gZGVzY3Jp
YmUgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlCisgICAgICAgICAgcmV0dXJuZWQgb2JqZWN0Lgor
ICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06Cisg
ICAgICAgICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgLSBSZW5hbWUg
dG8gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKS4KKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAgICAgICAtIFJlbmFtZSBmcm9tIHBpeGVsQnVmZmVy
RnJvbUZyYW1lKCkuCisgICAgICAgIC0gUmVuYW1lIGNvbnN0IHN0ZDo6ZnVuY3Rpb248PiYgYXJn
dW1lbnQgdG8gYGNyZWF0ZVBpeGVsQnVmZmVyYAorICAgICAgICAgIHRvIGRlc2NyaWJlIGl0cyBi
ZWhhdmlvciBvZiByZXR1cm5pbmcgYSArMSByZXRhaW5lZAorICAgICAgICAgIENWUGl4ZWxCdWZm
ZXJSZWYuCisgICAgICAgIC0gRml4IGxhc3QgcmV0dXJuIHN0YXRlbWVudCB0byByZXR1cm4gYSAr
MSByZXRhaW5lZAorICAgICAgICAgIENGUGl4ZWxCdWZmZXJSZWYgaWYgaXQgaXMgbm90IG51bGxw
dHIuCisKKyAgICAgICAgKiBXZWJLaXQvbGlid2VicnRjLmRpZmY6CisgICAgICAgIC0gVXBkYXRl
IGRpZmYgZm9yIFdlYktpdFV0aWxpdGllcy57aHxtbX0uCisKIDIwMjEtMDgtMTkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENE
dGxzVHJhbnNwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MGFmZWU1NTE5M2RlNzhkODc4MzQ3ODQ2NTYz
OTQ0M2E0OTE3ZS4uZGMzMzgzMzc1YzJkZjFlZjZhNTU4Njc1NDIyNjliNjI2MDUxNjM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ug
b2YgQ0ZQaXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisKIDIwMjEtMDgtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gTW92ZSBjb250ZW50IGJ1aWxkZXIgZnVuY3Rpb25hbGl0eSB0byBhIGRlZGlj
YXRlZCBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmZDU0YTEwYzk2ZGQ3Yjc5OTVkMjVkZjkxOWQ3NDk5NmQz
YTBiMzRmLi41ZTI5MmM4OGJhZTZjYjE5OTc3MDM2MGMxODZlNmQzYWI3ZWFmMjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA4LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ugb2YgQ0ZQ
aXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisgICAgICAgIC0gRGVjbGFyZSBsb2NhbCBgY29udmVydGVkUGl4ZWxCdWZmZXJgIHZhcmlhYmxl
IHNpbmNlCisgICAgICAgICAgYG5ld1BpeGVsQnVmZmVyYCB3YXMgcmVtb3ZlZCBmb3IgdGhlIGFi
b3ZlIGNoYW5nZXMuCisKIDIwMjEtMDgtMjcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggc3RkOjpvcHRpb25hbDw+IHN0cmlwcGluZyBpbiBNZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Mu
ZXhwCmluZGV4IDczYmNmMzg2OGNlYWEwNzhjYTRmNTg5ZWVjZWY5Y2E5N2Y0NjdhOTYuLjBkMzVj
ZTQ5YzM3ZGNmNzhhZGU0YzI3YmE5YTllYjgxMjYwNjg4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlP
Uy5leHAKQEAgLTk3LDE0ICs5NywxNCBAQCBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlv
RGVjb2RlckZhY3RvcnlFdgogX19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJG
YWN0b3J5RXYKIF9fWk42d2VicnRjMjdTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UxNlJlbW92
ZUNhbmRpZGF0ZXNFUktOU3QzX18xNnZlY3RvcklON2NyaWNrZXQ5Q2FuZGlkYXRlRU5TMV85YWxs
b2NhdG9ySVM0X0VFRUUKIF9fWk5LNndlYnJ0YzIxSWNlQ2FuZGlkYXRlSW50ZXJmYWNlMTBzZXJ2
ZXJfdXJsRXYKK19fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgog
X19aTjZ3ZWJydGMyMHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42d2VicnRjMjZjcmVhdGVX
ZWJLaXREZWNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18xMldl
YktpdFZQOVZUQkUKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9yeUVOU18x
MFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRMb3dMYXRlbmN5RQogX19a
TjZ3ZWJydGMyOXNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA5
RGVjb2RlckV2Ci1fX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVv
RnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVF
RUVFCi1fX1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKK19fWk42
d2VicnRjMjZjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVSS05T
dDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKIF9fWk4z
cnRjMjRCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkxOUNyZWF0ZUFzeW5jUmVzb2x2ZXJFdgogX19a
TjNydGMyNEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeUMyRXYKIF9fWk4zcnRjMjRCYXNpY1BhY2tl
dFNvY2tldEZhY3RvcnlEMkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggNzNi
Y2YzODY4Y2VhYTA3OGNhNGY1ODllZWNlZjljYTk3ZjQ2N2E5Ni4uMGQzNWNlNDljMzdkY2Y3OGFk
ZTRjMjdiYTlhOWViODEyNjA2ODhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApA
QCAtOTcsMTQgKzk3LDE0IEBAIF9fWk42d2VicnRjMzJDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVy
RmFjdG9yeUV2CiBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnlF
dgogX19aTjZ3ZWJydGMyN1Nlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZTE2UmVtb3ZlQ2FuZGlk
YXRlc0VSS05TdDNfXzE2dmVjdG9ySU43Y3JpY2tldDlDYW5kaWRhdGVFTlMxXzlhbGxvY2F0b3JJ
UzRfRUVFRQogX19aTks2d2VicnRjMjFJY2VDYW5kaWRhdGVJbnRlcmZhY2UxMHNlcnZlcl91cmxF
dgorX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCiBfX1pONndl
YnJ0YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdERl
Y29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzEyV2ViS2l0VlA5
VlRCRQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0
SDI2NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExvd0xhdGVuY3lFCiBfX1pONndlYnJ0
YzI5c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVy
V2ViS2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVy
RXYKLV9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVS
S05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKLV9f
Wk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgorX19aTjZ3ZWJydGMy
NmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThm
dW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjNydGMyNEJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeTE5Q3JlYXRlQXN5bmNSZXNvbHZlckV2CiBfX1pOM3J0YzI0
QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5QzJFdgogX19aTjNydGMyNEJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeUQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCA3M2JjZjM4NjhjZWFhMDc4
Y2E0ZjU4OWVlY2VmOWNhOTdmNDY3YTk2Li4wZDM1Y2U0OWMzN2RjZjc4YWRlNGMyN2JhOWE5ZWI4
MTI2MDY4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC05NywxNCArOTcsMTQgQEAg
X19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5RXYKIF9fWk42d2Vi
cnRjMzJDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUV2CiBfX1pONndlYnJ0YzI3U2Vz
c2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlMTZSZW1vdmVDYW5kaWRhdGVzRVJLTlN0M19fMTZ2ZWN0
b3JJTjdjcmlja2V0OUNhbmRpZGF0ZUVOUzFfOWFsbG9jYXRvcklTNF9FRUVFCiBfX1pOSzZ3ZWJy
dGMyMUljZUNhbmRpZGF0ZUludGVyZmFjZTEwc2VydmVyX3VybEV2CitfX1pONndlYnJ0YzE4cGl4
ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlv
blN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2
Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlF
TlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVF
bmNvZGVyQWxsb3dlZEViCiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYK
IF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgotX19aTjZ3ZWJydGMyMHBp
eGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklG
UDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQotX19aTjZ3ZWJydGMxOHBpeGVsQnVm
ZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCitfX1pONndlYnJ0YzI2Y3JlYXRlUGl4ZWxCdWZmZXJG
cm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVm
ZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5MTlDcmVhdGVBc3luY1Jlc29sdmVyRXYKIF9fWk4zcnRjMjRCYXNpY1BhY2tldFNvY2tldEZh
Y3RvcnlDMkV2CiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5RDJFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCmluZGV4
IGYwYmE5ZGY0MzQ0NzNlN2YzNjgzNGRmNzA4NDcyYmEwMDIyMWQ5NGUuLmI3NWM0MjkwOWY3YjQ5
NmM3NzFmZmM4MDk1OGM4ZTUyMDEyZmNhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVy
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2MCw3IEBAIE9TU3RhdHVz
IFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCiAKIGludDMy
X3QgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogewot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNd
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgQnVmZmVyVHlwZSB0eXBlKSAtPiBDVlBpeGVs
QnVmZmVyUmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5
cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQ
b29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVy
VHlwZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMu
aAppbmRleCA3NGQzNzY4NWI0NzQ2NTNmOTRkNzhjNjE4YjdmNWNkMzgyM2Y5OWNmLi4zZWEwNGZk
NThmNGM2NWZlYzM1NzViYTUwMWQzNjA5NWI2OWE2M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiYXBpL3Zp
ZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS9zY29wZWRfcmVmcHRyLmgi
CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KIAogdXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKQEAgLTQ2
LDcgKzQ3LDcgQEAgdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKIGJv
b2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1ZmZlclR5
cGUgeyBJNDIwLCBJMDEwIH07Ci1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYo
c2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYpOworQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQ
aXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBp
eGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4
IDI3Y2FlOTc4MjI3ZmVlYWI5MGE0YjZmZmM3ZjVlZmNiZjA2NDE1ZmUuLjNhNjRiMDE0ZDBmMTdk
MmNhZDgyNDU1ZWIyNjU4NTZiZjk1ZTcyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBDb3B5VmlkZW9G
cmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNlKiBmcmFt
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1DVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJv
bUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4
ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgbWFrZVBpeGVsQnVmZmVy
KQorQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQogewogICAgIGF1dG8g
YnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CiAgICAgaWYgKGJ1ZmZlci0+dHlw
ZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVy
KGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsK
KyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lk
dGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKICAgICAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKSA8PCAiUGl4ZWwg
YnVmZmVyIGNyZWF0aW9uIGZhaWxlZC4iOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNzIsNyArMTcyLDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShj
b25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChSVENDVlBpeGVsQnVmZmVy
ICopZnJhbWVCdWZmZXI7Ci0gICAgcmV0dXJuIHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyOwor
ICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/IENWUGl4ZWxCdWZmZXJSZXRh
aW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYKaW5kZXgg
MzA5MjExNjM4M2MzNWNlYTUyZjliODZmMDljMGUwZGU0YjI3NTZkZC4uOGJjYTNjZTA5MTg1MjJm
MTcxZWI2M2NhYTVmMDFjMDRiM2ZhOGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvV2ViS2l0L2xpYndlYnJ0Yy5kaWZmCkBAIC05NDQsOSArOTQ0LDkgQEAgbmV3IGZp
bGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogLS0tIC9kZXYv
bnVsbAogKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAotQEAgLTAsMCArMSw1NCBAQAorQEAgLTAsMCArMSw1
MyBAQAogKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiArICoKICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3Mywy
OSArOTczLDI4IEBAIGluZGV4IDAwMDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogKyNwcmFnbWEgb25j
ZQogKwogKyNpbmNsdWRlICJhcGkvdmlkZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCi0rI2luY2x1
ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmgiCi0rI2luY2x1ZGUgIndlYnJ0Yy9tZWRpYS9l
bmdpbmUvd2VicnRjdmlkZW9kZWNvZGVyZmFjdG9yeS5oIgotKyNpbmNsdWRlICJ3ZWJydGMvbWVk
aWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5jb2RlcmZhY3RvcnkuaCIKKysjaW5jbHVkZSAiYXBpL3Nj
b3BlZF9yZWZwdHIuaCIKKysjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CisrI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiArCi0rdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhl
bEJ1ZmZlclJlZjsKKyt1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIq
OwogKwogK25hbWVzcGFjZSB3ZWJydGMgewogKwotK2NsYXNzIFZpZGVvRGVjb2RlckZhY3Rvcnk7
Ci0rY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKICtjbGFzcyBWaWRlb0ZyYW1lOwogKwotK2Vu
dW0gY2xhc3MgV2ViS2l0Q29kZWNTdXBwb3J0IHsgSDI2NCwgSDI2NEFuZFZQOCB9OwotKwotK3N0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVu
Y29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCk7Ci0rc3RkOjp1bmlxdWVfcHRyPHdlYnJ0
Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0
Q29kZWNTdXBwb3J0KTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjUgeyBPZmYsIE9uIH07CisrZW51
bSBjbGFzcyBXZWJLaXRWUDkgeyBPZmYsIFByb2ZpbGUwLCBQcm9maWxlMEFuZDIgfTsKKytlbnVt
IGNsYXNzIFdlYktpdFZQOVZUQiB7IE9mZiwgT24gfTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjRM
b3dMYXRlbmN5IHsgT2ZmLCBPbiB9OwogKwogK3ZvaWQgc2V0QXBwbGljYXRpb25TdGF0dXMoYm9v
bCBpc0FjdGl2ZSk7CiArCiArdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29s
KTsKICtib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKICsKLStDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYpOworK2VudW0gY2xh
c3MgQnVmZmVyVHlwZSB7IEk0MjAsIEkwMTAgfTsKKytDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBp
eGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4
ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CiArcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYp
OwogKwogK30KQEAgLTEwMDQsOSArMTAwMyw5IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRl
eCAwMDAwMDAwMDAwMC4uNjVlZWZhMzZmMmQKIC0tLSAvZGV2L251bGwKICsrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0
aWVzLm1tCi1AQCAtMCwwICsxLDE4NSBAQAorQEAgLTAsMCArMSwxNzggQEAKICsvKgotKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKyAq
CiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMyLDY4ICsxMDMxLDE1IEBAIGlu
ZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKwogKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRp
ZXMuaCIKICsKLSsvLyNpbmNsdWRlICJDb21tb24vUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2Vy
dmVyLmgiCi0rI2ltcG9ydCAiV2ViUlRDL1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCi0rCiArI2luY2x1
ZGUgImFwaS92aWRlby92aWRlb19mcmFtZS5oIgogKyNpbmNsdWRlICJuYXRpdmUvc3JjL29iamNf
ZnJhbWVfYnVmZmVyLmgiCisrI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICsjaW5jbHVk
ZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgotKyNp
bmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2UvY2hlY2tzLmgiCi0rI2luY2x1ZGUgIkZyYW1ld29yay9I
ZWFkZXJzL1dlYlJUQy9SVENWaWRlb0NvZGVjRmFjdG9yeS5oIgotKyNpbmNsdWRlICJGcmFtZXdv
cmsvSGVhZGVycy9XZWJSVEMvUlRDVmlkZW9GcmFtZS5oIgorKyNpbmNsdWRlICJsaWJ5dXYvY3B1
X2lkLmgiCisrI2luY2x1ZGUgImxpYnl1di9yb3cuaCIKICsjaW5jbHVkZSAiRnJhbWV3b3JrL0hl
YWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJhbWVCdWZmZXIuaCIKLSsjaW5jbHVkZSAiRnJhbWV3b3Jr
L05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rlcl9mYWN0b3J5LmgiCi0rI2luY2x1ZGUgIkZyYW1ld29y
ay9OYXRpdmUvYXBpL3ZpZGVvX2VuY29kZXJfZmFjdG9yeS5oIgotKy8qCi0rI2lmICFkZWZpbmVk
KFdFQlJUQ19JT1MpCi0rX19hdHRyaWJ1dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1VJ
QXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciIpKSkKLStAaW50ZXJmYWNlIFJUQ1VJQXBwbGljYXRp
b25TdGF0dXNPYnNlcnZlciA6IE5TT2JqZWN0Ci0rCi0rKyAoaW5zdGFuY2V0eXBlKXNoYXJlZElu
c3RhbmNlOwotKysgKHZvaWQpcHJlcGFyZUZvclVzZTsKLSsKLSstIChCT09MKWlzQXBwbGljYXRp
b25BY3RpdmU7Ci0rCi0rQGVuZAotKyNlbmRpZgotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENVSUFw
cGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIgewotKyAgICBCT09MIF9pc0FjdGl2ZTsKLSt9Ci0rCi0r
KyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlIHsKLSsgICAgc3RhdGljIGlkIHNoYXJlZElu
c3RhbmNlOwotKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSsgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW3Nl
bGYgYWxsb2NdIGluaXRdOwotKyAgICB9KTsKKysjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2
L2luY2x1ZGUvbGlieXV2LmgiCiArCi0rICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKLSt9Ci0r
Ci0rKyAodm9pZClwcmVwYXJlRm9yVXNlIHsKLSsgICAgX191bnVzZWQgUlRDVUlBcHBsaWNhdGlv
blN0YXR1c09ic2VydmVyICpvYnNlcnZlciA9IFtzZWxmIHNoYXJlZEluc3RhbmNlXTsKLSt9Ci0r
Ci0rLSAoaWQpaW5pdCB7Ci0rICAgIF9pc0FjdGl2ZSA9IFlFUzsKLSsgICAgcmV0dXJuIHNlbGY7
Ci0rfQotKwotKy0gKHZvaWQpc2V0QWN0aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gWUVTOwotK30K
LSsKLSstICh2b2lkKXNldEluYWN0aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gTk87Ci0rfQotKwot
Ky0gKEJPT0wpaXNBcHBsaWNhdGlvbkFjdGl2ZSB7Ci0rICAgIHJldHVybiBfaXNBY3RpdmU7Ci0r
fQotKwotK0BlbmQKLSsqLwogK25hbWVzcGFjZSB3ZWJydGMgewogKwogK3ZvaWQgc2V0QXBwbGlj
YXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2ZSkKQEAgLTExMDYsNDAgKzEwNTIsMTMgQEAgaW5kZXgg
MDAwMDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiArICovCiArfQogKwotK3N0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdl
YktpdENvZGVjU3VwcG9ydCBjb2RlY1N1cHBvcnQpCi0rewotKyNpZiBFTkFCTEVfVkNQX0VOQ09E
RVIKLSsgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlRmxhZywgW10gewotKyAgICAgICAgd2VicnRjOjpWUE1vZHVsZUluaXRpYWxpemUo
KTsKLSsgICAgfSk7Ci0rI2VuZGlmCi0rICAgIHJldHVybiBPYmpDVG9OYXRpdmVWaWRlb0VuY29k
ZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDgg
PyBbW1JUQ0RlZmF1bHRWaWRlb0VuY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlk
ZW9FbmNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9Ci0rCi0rc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3Rv
cnkoV2ViS2l0Q29kZWNTdXBwb3J0IGNvZGVjU3VwcG9ydCkKLSt7Ci0rICAgIHJldHVybiBPYmpD
VG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1
cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JUQ0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IGFsbG9j
XSBpbml0XSA6IFtbUlRDVmlkZW9EZWNvZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9
Ci0rCi0rc3RhdGljIGJvb2wgaDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSB0cnVlOwotK3Zv
aWQgc2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbCBhbGxvd2VkKQotK3sKLSsgICAg
aDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQgPSBhbGxvd2VkOwotK30KLSsKLStib29sIGlzSDI2
NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKQotK3sKLSsgICAgcmV0dXJuIGgyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkOwotK30KLSsKICtydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0Zy
YW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
cikKICt7CiArICAgIFJUQ0NWUGl4ZWxCdWZmZXIgKmZyYW1lQnVmZmVyID0gW1tSVENDVlBpeGVs
QnVmZmVyIGFsbG9jXSBpbml0V2l0aFBpeGVsQnVmZmVyOnBpeGVsQnVmZmVyXTsKICsgICAgcmV0
dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihmcmFtZUJ1ZmZl
cik7CiArfQogKwotK3N0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25z
dCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUs
IENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7Cisrc3RhdGljIGJvb2wgQ29weVZpZGVv
RnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZSogZnJh
bWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmZmVyKSB7CiArICAgIFJUQ19EQ0hFQ0socGl4
ZWxfYnVmZmVyKTsKICsgICAgUlRDX0RDSEVDSyhDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRU
eXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5h
ckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZl
cikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UpOwog
KyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1
ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CkBAIC0xMTQ4
LDExICsxMDY3LDI2IEBAIGluZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKyAgICBpZiAo
Q1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbF9idWZmZXIsIDApICE9IGtDVlJldHVy
blN1Y2Nlc3MpCiArICAgICAgICByZXR1cm4gZmFsc2U7CiArCisrICAgIGF1dG8gc3JjX3dpZHRo
X3kgPSBmcmFtZS0+d2lkdGgoKTsKKysgICAgYXV0byBzcmNfaGVpZ2h0X3kgPSBmcmFtZS0+aGVp
Z2h0KCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJhbWUtPkNocm9tYVdpZHRoKCk7Cisr
ICAgIGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJvbWFIZWlnaHQoKTsKKysKICsgICAg
dWludDhfdCogZHN0X3kgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVy
R2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCkpOwogKyAgICBpbnQgZHN0X3N0
cmlkZV95ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIs
IDApOworKyAgICBhdXRvIGRzdF93aWR0aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFu
ZShwaXhlbF9idWZmZXIsIDApOworKyAgICBhdXRvIGRzdF9oZWlnaHRfeSA9IENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCk7CiArCiArICAgIHVpbnQ4X3QqIGRz
dF91diA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRk
cmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKSk7CiArICAgIGludCBkc3Rfc3RyaWRlX3V2ID0g
Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworKyAg
ICBhdXRvIGRzdF93aWR0aF91diA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxf
YnVmZmVyLCAxKTsKKysgICAgYXV0byBkc3RfaGVpZ2h0X3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEhl
aWdodE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKysKKysgICAgaWYgKHNyY193aWR0aF95ICE9
IGRzdF93aWR0aF95CisrICAgICAgICB8fCBzcmNfaGVpZ2h0X3kgIT0gZHN0X2hlaWdodF95Cisr
ICAgICAgICB8fCBzcmNfd2lkdGhfdXYgIT0gZHN0X3dpZHRoX3V2CisrICAgICAgICB8fCBzcmNf
aGVpZ2h0X3V2ICE9IGRzdF9oZWlnaHRfdXYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CiArCiAr
ICAgIGludCByZXN1bHQgPSBsaWJ5dXY6Okk0MjBUb05WMTIoCiArICAgICAgICBmcmFtZS0+RGF0
YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwKQEAgLTExNjksMjQgKzExMDMsODIgQEAgaW5kZXggMDAw
MDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiArICAgIHJldHVybiB0cnVlOwogK30KICsKLSsKLStDVlBp
eGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1l
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYg
bWFrZVBpeGVsQnVmZmVyKQorK3N0YXRpYyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihjb25zdCB3ZWJydGM6OkkwMTBCdWZmZXJJbnRlcmZhY2UqIGZyYW1lLCBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsX2J1ZmZlcikKICt7Ci0rICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIo
KS0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSsgICAgICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25zdCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBm
cmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+R2V0STQyMCgpOworKyAgICBSVENfRENIRUNLKHBp
eGVsX2J1ZmZlcik7CisrICAgIFJUQ19EQ0hFQ0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0
VHlwZShwaXhlbF9idWZmZXIpID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxh
bmFyVmlkZW9SYW5nZSB8fCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1
ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2Up
OworKyAgICBSVENfRENIRUNLX0VRKENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisrICAg
IFJUQ19EQ0hFQ0tfRVEoQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbF9idWZmZXIs
IDApLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZyYW1lLT53aWR0aCgpKSk7CiArCi0rICAgICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gbWFrZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVy
LT5oZWlnaHQoKSk7Ci0rICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCi0rICAgICAgICAgICAgQ29w
eVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT5HZXRJ
NDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgaWYgKENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJl
c3MocGl4ZWxfYnVmZmVyLCAwKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorKyAgICAgICAgcmV0dXJu
IGZhbHNlOworKworKyAgICBhdXRvIHNyY195ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZyYW1l
LT5EYXRhWSgpKTsKKysgICAgYXV0byBzcmNfdSA9IGNvbnN0X2Nhc3Q8dWludDE2X3QqPihmcmFt
ZS0+RGF0YVUoKSk7CisrICAgIGF1dG8gc3JjX3YgPSBjb25zdF9jYXN0PHVpbnQxNl90Kj4oZnJh
bWUtPkRhdGFWKCkpOworKyAgICBhdXRvIHNyY193aWR0aF95ID0gZnJhbWUtPndpZHRoKCk7Cisr
ICAgIGF1dG8gc3JjX2hlaWdodF95ID0gZnJhbWUtPmhlaWdodCgpOworKyAgICBhdXRvIHNyY19z
dHJpZGVfeSA9IGZyYW1lLT5TdHJpZGVZKCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJh
bWUtPkNocm9tYVdpZHRoKCk7CisrICAgIGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJv
bWFIZWlnaHQoKTsKKysgICAgYXV0byBzcmNfc3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpOwor
KyAgICBhdXRvIHNyY19zdHJpZGVfdiA9IGZyYW1lLT5TdHJpZGVWKCk7CisrCisrICAgIGF1dG8q
IGRzdF95ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNl
QWRkcmVzc09mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKSk7CisrICAgIGF1dG8gZHN0X3N0cmlkZV95
ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApIC8g
MjsKKysgICAgYXV0byBkc3Rfd2lkdGhfeSA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUo
cGl4ZWxfYnVmZmVyLCAwKTsKKysgICAgYXV0byBkc3RfaGVpZ2h0X3kgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworKworKyAgICBhdXRvKiBkc3RfdXYg
PSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNz
T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpKTsKKysgICAgYXV0byBkc3Rfc3RyaWRlX3V2ID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpIC8gMjsKKysg
ICAgYXV0byBkc3Rfd2lkdGhfdXYgPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMSk7CisrICAgIGF1dG8gZHN0X2hlaWdodF91diA9IENWUGl4ZWxCdWZmZXJHZXRI
ZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSk7CisrCisrICAgIGlmIChzcmNfd2lkdGhfeSAh
PSBkc3Rfd2lkdGhfeQorKyAgICAgICAgfHwgc3JjX2hlaWdodF95ICE9IGRzdF9oZWlnaHRfeQor
KyAgICAgICAgfHwgc3JjX3dpZHRoX3V2ICE9IGRzdF93aWR0aF91dgorKyAgICAgICAgfHwgc3Jj
X2hlaWdodF91diAhPSBkc3RfaGVpZ2h0X3V2KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKwor
KyAgICBsaWJ5dXY6OkkwMTBUb1AwMTAoc3JjX3ksIHNyY19zdHJpZGVfeSwKKysgICAgICAgICAg
ICAgICAgICAgICAgIHNyY191LCBzcmNfc3RyaWRlX3UsCisrICAgICAgICAgICAgICAgICAgICAg
ICBzcmNfdiwgc3JjX3N0cmlkZV92LAorKyAgICAgICAgICAgICAgICAgICAgICAgZHN0X3ksIGRz
dF9zdHJpZGVfeSwgZHN0X3V2LCBkc3Rfc3RyaWRlX3V2LAorKyAgICAgICAgICAgICAgICAgICAg
ICAgc3JjX3dpZHRoX3ksIHNyY19oZWlnaHRfeSk7CisrCisrICAgIENWUGl4ZWxCdWZmZXJVbmxv
Y2tCYXNlQWRkcmVzcyhwaXhlbF9idWZmZXIsIDApOworKyAgICByZXR1cm4gdHJ1ZTsKKyt9Cisr
CisrQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQorK3sKKysgICAgYXV0
byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKysgICAgaWYgKGJ1ZmZlci0+
dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKKysgICAgICAgIGF1
dG8gdHlwZSA9IGJ1ZmZlci0+dHlwZSgpOworKyAgICAgICAgaWYgKHR5cGUgIT0gVmlkZW9GcmFt
ZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYgdHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkgeworKyAgICAgICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIlZpZGVvIGZyYW1lIGJ1
ZmZlciB0eXBlIGlzIG5vdCBleHBlY3RlZC4iOworKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworKyAgICAgICAgfQorKworKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVs
QnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0Zy
YW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJ
MDEwKTsKKysgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKKysgICAgICAgICAgICBSVENfTE9H
KFdBUk5JTkcpIDw8ICJQaXhlbCBidWZmZXIgY3JlYXRpb24gZmFpbGVkLiI7CisrICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAodHlwZSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFt
ZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgICAg
IGVsc2UKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5H
ZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICsgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICsg
ICAgfQogKwotKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1
ZmZlcio+KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9i
dWZmZXIoKTsKKysgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJhbWVC
dWZmZXIqPihidWZmZXIuZ2V0KCkpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogKyAgICBpZiAo
IVtmcmFtZUJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCiAr
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICsKICsgICAgYXV0byAqcnRjUGl4ZWxCdWZmZXIgPSAo
UlRDQ1ZQaXhlbEJ1ZmZlciAqKWZyYW1lQnVmZmVyOwotKyAgICByZXR1cm4gcnRjUGl4ZWxCdWZm
ZXIucGl4ZWxCdWZmZXI7CisrICAgIHJldHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/
IENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0
cjsKICt9CiArCiArfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tCmluZGV4IDBjNzFlMWRiMTBmYTQzN2E3YzAwNDNkMzY0ZjQ0YmY3MjM3MTFjOTcu
LjUyMWRlN2E5NzRlZWMyMGU5OTc0YzA4YWQzOWI2Y2VmN2MyMWY3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsOCArMTE3
LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgcmV0dXJuIG1fYmxhY2tGcmFt
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4
ZWxCdWZmZXI7Ci0gICAgcmV0dXJuIHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUs
IFt0aGlzLCAmbmV3UGl4ZWxCdWZmZXJdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIHJl
dHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0
aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZm
ZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBv
b2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CiAg
ICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMzAsOSArMTI5LDggQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAg
IEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCBjcmVhdGlu
ZyBhIHBpeGVsIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0YXR1cyk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yo
cGl4ZWxCdWZmZXIpOwotICAgICAgICByZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7Ci0gICAg
fSk7CisgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKKyAgICB9KSk7CiB9CiAKIHZvaWQgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDI4ZTljNjk4MmFjNTQ2OWVlOTVmYWI4
NmRmNzZlNmNmMzhlOTI0ZmIuLjczYzI5NTk2NGQ4MTAzZjI3NDJkZTY0YTI2Y2Y4NGZlZWNiMzgy
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MzEsOCArNDMxLDcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2Rl
Y3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19W
SURFT19DT0RFQ19FUlJPUjsKIAotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBuZXdQ
aXhlbEJ1ZmZlcjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZy
b21GcmFtZShmcmFtZSwgWyZuZXdQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7
CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZl
ckZyb21GcmFtZShmcmFtZSwgW10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6
OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIE9T
VHlwZSBwb29sQnVmZmVyVHlwZTsKICAgICAgICAgc3dpdGNoIChidWZmZXJUeXBlKSB7CiAgICAg
ICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJUeXBlOjpJNDIwOgpAQCAtNDQ1LDE4ICs0NDQsMTcgQEAg
aW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IFdl
YkNvcmU6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbVBvb2wocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAg
ICAgcmV0dXJuIG5ld1BpeGVsQnVmZmVyLmdldCgpOwotICAgIH0pOworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tUG9vbChwaXhlbEJ1ZmZlclBvb2wpLmxlYWtS
ZWYoKTsKKyAgICB9KSk7CiAKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0gICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3Vz
KCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90
YXRpb24oKSkpOworICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShw
aXhlbEJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwg
MTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsK
ICAgICBpZiAoIXNhbXBsZSkgewogICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhpcyBjb2Rl
IHBhdGgsIGN1cnJlbnRseSB3ZSBoYXZlIG5vbiBCR1JBIGZvciBtdXRlZCBmcmFtZXMgYXQgbGVh
c3QuCi0gICAgICAgIG5ld1BpeGVsQnVmZmVyID0gY29udmVydFRvQkdSQShwaXhlbEJ1ZmZlcik7
Ci0gICAgICAgIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobmV3UGl4ZWxCdWZm
ZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDAp
LCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSk7CisgICAgICAg
IGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0VG9CR1JBKHBpeGVsQnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShjb252ZXJ0
ZWRQaXhlbEJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAw
MCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkp
KTsKICAgICB9CiAKICAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBs
ZSwgZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7Cg==
</data>
<flag name="commit-queue"
          id="459878"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436852</attachid>
            <date>2021-08-31 01:10:52 -0700</date>
            <delta_ts>2021-08-31 19:27:25 -0700</delta_ts>
            <desc>Alternative approach</desc>
            <filename>0001-fix-229661.patch</filename>
            <type>text/plain</type>
            <size>2091</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">RnJvbSAyNzE1YWQyYzA5M2IxYjI3YTA0Mzk4ZGRiZTY3N2U5MWNkN2Q4NzFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDMxIEF1ZyAyMDIxIDEwOjA5OjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gZml4LTIy
OTY2MQoKLS0tCiAuLi4vd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNw
cCAgICB8IDE0ICsrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCsp
LCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RGVjb2RlclJlY2VpdmVyLmNwcAppbmRleCBmMGJhOWRmNDM0NDcuLjFlMDBhYzgzMmMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNw
cApAQCAtMTYwLDIxICsxNjAsMjEgQEAgT1NTdGF0dXMgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKGludCBlcnJvcikKIAogaW50MzJfdCBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6
OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBp
eGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCBCdWZmZXJUeXBlIHR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIENWUGl4ZWxC
dWZmZXJSZWYgbmV3bHlDcmVhdGVkUGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXMsICZuZXdseUNyZWF0
ZWRQaXhlbEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBCdWZmZXJUeXBlIHR5
cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9
IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCB0eXBlID09IEJ1ZmZlclR5cGU6
OkkwMTApOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxs
cHRyOwotICAgICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZS
ZXR1cm5TdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxC
dWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wsICZuZXdseUNyZWF0
ZWRQaXhlbEJ1ZmZlcikgIT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gbmV3bHlDcmVhdGVkUGl4ZWxCdWZmZXI7CiAgICAgfSk7
CiAKICAgICBWVERlY29kZXJTZXNzaW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3Vy
cmVudEZyYW1lLCBwaXhlbEJ1ZmZlciA/IG5vRXJyIDogLTEsIDAsIHBpeGVsQnVmZmVyKTsKICAg
ICBtX2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Ci0gICAgaWYgKHBpeGVsQnVmZmVyKQotICAgICAg
ICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOworICAgIGlmIChuZXdseUNyZWF0ZWRQaXhlbEJ1ZmZl
cikKKyAgICAgICAgQ0ZSZWxlYXNlKG5ld2x5Q3JlYXRlZFBpeGVsQnVmZmVyKTsKICAgICByZXR1
cm4gMDsKIH0KIAotLSAKMi4yNC4zIChBcHBsZSBHaXQtMTI4KQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436986</attachid>
            <date>2021-08-31 19:27:28 -0700</date>
            <delta_ts>2021-09-01 13:02:13 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-229661-20210831192727.patch</filename>
            <type>text/plain</type>
            <size>30842</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjN2UwZTA2ZDgzNmIxMmFlMTFlMTQ4MDEzNjQ3ZDZmYjQ0NTAzYzMxLi43NDk3
NWM1NTdmMzc2NGRhOTgxMTVmOTdiYThlYzM3YzMzZDdmMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wOC0zMSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJSVENdIExlYWsgb3Igb3Zl
ci1yZWxlYXNlIG9mIENGUGl4ZWxCdWZmZXJSZWYgcmV0dXJuZWQgZnJvbSB3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIy
OTY2MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyNTA3ODI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5l
eHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAg
IC0gVXBkYXRlIGV4cG9ydCBzeW1ib2wgZm9yIHJlbmFtZSBmcm9tIHBpeGVsQnVmZmVyRnJvbUZy
YW1lKCkgdG8KKyAgICAgICAgICBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgpLgorCisgICAg
ICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIGNhbGwgcmVuYW1lZCBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSgp
IGZ1bmN0aW9uLgorICAgICAgICAgIFRoaXMgbWV0aG9kIGFscmVhZHkgcmVsZWFzZWQgdGhlIHJl
dHVybmVkIENGUGl4ZWxCdWZmZXJSZWYsIHNvCisgICAgICAgICAgaXQgZGlkIG5vdCByZXF1aXJl
IGFueSBtb3JlIGNoYW5nZXMuICBBbHNvLCBpdHMgZnVuY3RvcgorICAgICAgICAgIHJldHVybmVk
IGEgKzEgcmV0YWluZWQgQ0ZQaXhlbEJ1ZmZlclJlZiwgc28gaXQgZGlkIG5vdCBuZWVkIHRvCisg
ICAgICAgICAgY2hhbmdlLCBlaXRoZXIuCisKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgIC0gSW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ0ZCYXNlLmg+IGZvciBDRl9SRVRVUk5TX1JFVEFJTkVELgorICAgICAgICAod2VicnRjOjpj
cmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZSk6CisgICAgICAgIC0gTmFtZSBjb25zdCBzdGQ6OmZ1
bmN0aW9uPD4mIGFzIGBjcmVhdGVQaXhlbEJ1ZmZlcmAgdG8gZGVzY3JpYmUKKyAgICAgICAgICBp
dHMgYmVoYXZpb3IuCisgICAgICAgIC0gQWRkIENGX1JFVFVSTlNfUkVUQUlORUQgdG8gZGVzY3Jp
YmUgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlCisgICAgICAgICAgcmV0dXJuZWQgb2JqZWN0Lgor
ICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06Cisg
ICAgICAgICh3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKToKKyAgICAgICAgLSBSZW5hbWUg
dG8gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKS4KKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWUpOgorICAgICAgICAtIFJlbmFtZSBmcm9tIHBpeGVsQnVmZmVy
RnJvbUZyYW1lKCkuCisgICAgICAgIC0gUmVuYW1lIGNvbnN0IHN0ZDo6ZnVuY3Rpb248PiYgYXJn
dW1lbnQgdG8gYGNyZWF0ZVBpeGVsQnVmZmVyYAorICAgICAgICAgIHRvIGRlc2NyaWJlIGl0cyBi
ZWhhdmlvciBvZiByZXR1cm5pbmcgYSArMSByZXRhaW5lZAorICAgICAgICAgIENWUGl4ZWxCdWZm
ZXJSZWYuCisgICAgICAgIC0gRml4IGxhc3QgcmV0dXJuIHN0YXRlbWVudCB0byByZXR1cm4gYSAr
MSByZXRhaW5lZAorICAgICAgICAgIENGUGl4ZWxCdWZmZXJSZWYgaWYgaXQgaXMgbm90IG51bGxw
dHIuCisKKyAgICAgICAgKiBXZWJLaXQvbGlid2VicnRjLmRpZmY6CisgICAgICAgIC0gVXBkYXRl
IGRpZmYgZm9yIFdlYktpdFV0aWxpdGllcy57aHxtbX0uCisKIDIwMjEtMDgtMTkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENE
dGxzVHJhbnNwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY1ODRlM2U5ZjEwOTY5YWI0YjdlZDRkYzY3Nzkw
MGJhN2Y1MWI3Yi4uMWU1MzI3NzVhNTlhMGQ5Mzk1MWM1NDhlMWU0YWExZDg3MTU3ZTZkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTMxICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ug
b2YgQ0ZQaXhlbEJ1ZmZlclJlZiByZXR1cm5lZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWUoKQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI5NjYxPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODI1MDc4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZSk6Cisg
ICAgICAgIC0gVXNlIGFkb3B0Q0YoKSB0byBwcmV2ZW50IGEgbGVhayBzaW5jZQorICAgICAgICAg
IHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKSBhbHdheXMgcmV0dXJucyBhICsx
CisgICAgICAgICAgcmV0YWluZWQgQ1ZQaXhlbEJ1ZmZlclJlZiBub3cuCisgICAgICAgIC0gQ2hh
bmdlIHRoZSBmdW5jdG9yIHRvIHJldHVybiBhICsxIHJldGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYu
CisKIDIwMjEtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIyNzI5MDApOiB3cHQuZnlpIGxvYWRpbmcgcGVyZm9ybWFuY2UgaXMg
dmVyeSBzbG93IChyZWdyZXNzZWQsIGFuZCBzbG93ZXIgdGhhbiBvdGhlciBicm93c2VycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMzJhYjg3N2Y4YWE4N2FiMjU0YmU2N2RjZmMwMGVlMDY0NjIxNzg0OS4uMDlkZTFm
N2MzNjMxZGQ4YTY4YTE1YmY3ZDkwMWRmOWUzODUxOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAyMS0wOC0zMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJSVENdIExlYWsgb3Igb3Zlci1yZWxlYXNlIG9mIENGUGl4ZWxCdWZmZXJSZWYg
cmV0dXJuZWQgZnJvbSB3ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIyOTY2MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzgyNTA3ODI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUpOgorICAgICAgICAtIFVzZSBh
ZG9wdENGKCkgdG8gcHJldmVudCBhIGxlYWsgc2luY2UKKyAgICAgICAgICB3ZWJydGM6OmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKCkgYWx3YXlzIHJldHVybnMgYSArMQorICAgICAgICAgIHJl
dGFpbmVkIENWUGl4ZWxCdWZmZXJSZWYgbm93LgorICAgICAgICAtIENoYW5nZSB0aGUgZnVuY3Rv
ciB0byByZXR1cm4gYSArMSByZXRhaW5lZCBDVlBpeGVsQnVmZmVyUmVmLgorICAgICAgICAtIFJl
dXNlIGBwaXhlbEJ1ZmZlcmAgdG8gc3RvcmUgdGhlIGNvbnZlcnRlZCBDVlBpeGVsQnVmZmVyUmVm
CisgICAgICAgICAgc2luY2UgdGhpcyBvYmplY3QgbmVlZHMgdG8gYmUga2VwdCBhbGl2ZSB1bnRp
bCBhZnRlciB0aGUKKyAgICAgICAgICBzZW5kKCkgbWV0aG9kIGlzIGNhbGxlZC4KKwogMjAyMS0w
OC0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1NPVVBdIEFzc2VydGlvbiBpbiBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IDczYmNmMzg2OGNlYWEwNzhjYTRmNTg5ZWVjZWY5Y2E5
N2Y0NjdhOTYuLjBkMzVjZTQ5YzM3ZGNmNzhhZGU0YzI3YmE5YTllYjgxMjYwNjg4YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTk3LDE0ICs5NywxNCBAQCBfX1pONndlYnJ0YzMyQ3Jl
YXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnlFdgogX19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0
aW5BdWRpb0VuY29kZXJGYWN0b3J5RXYKIF9fWk42d2VicnRjMjdTZXNzaW9uRGVzY3JpcHRpb25J
bnRlcmZhY2UxNlJlbW92ZUNhbmRpZGF0ZXNFUktOU3QzX18xNnZlY3RvcklON2NyaWNrZXQ5Q2Fu
ZGlkYXRlRU5TMV85YWxsb2NhdG9ySVM0X0VFRUUKIF9fWk5LNndlYnJ0YzIxSWNlQ2FuZGlkYXRl
SW50ZXJmYWNlMTBzZXJ2ZXJfdXJsRXYKK19fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVF
UDEwX19DVkJ1ZmZlcgogX19aTjZ3ZWJydGMyMHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42
d2VicnRjMjZjcmVhdGVXZWJLaXREZWNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdl
YktpdFZQOUVOU18xMldlYktpdFZQOVZUQkUKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNv
ZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRM
b3dMYXRlbmN5RQogX19aTjZ3ZWJydGMyOXNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIK
IF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJl
Z2lzdGVyV2ViS2l0VlA5RGVjb2RlckV2Ci1fX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJh
bWVFUktOU18xMFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1O
U18xMEJ1ZmZlclR5cGVFRUVFCi1fX1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9f
Q1ZCdWZmZXIKK19fWk42d2VicnRjMjZjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEw
VmlkZW9GcmFtZUVSS05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVy
VHlwZUVFRUUKIF9fWk4zcnRjMjRCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkxOUNyZWF0ZUFzeW5j
UmVzb2x2ZXJFdgogX19aTjNydGMyNEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeUMyRXYKIF9fWk4z
cnRjMjRCYXNpY1BhY2tldFNvY2tldEZhY3RvcnlEMkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3Np
bS5leHAKaW5kZXggNzNiY2YzODY4Y2VhYTA3OGNhNGY1ODllZWNlZjljYTk3ZjQ2N2E5Ni4uMGQz
NWNlNDljMzdkY2Y3OGFkZTRjMjdiYTlhOWViODEyNjA2ODhjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMuaU9Tc2ltLmV4cApAQCAtOTcsMTQgKzk3LDE0IEBAIF9fWk42d2VicnRjMzJDcmVhdGVCdWls
dGluQXVkaW9EZWNvZGVyRmFjdG9yeUV2CiBfX1pONndlYnJ0YzMyQ3JlYXRlQnVpbHRpbkF1ZGlv
RW5jb2RlckZhY3RvcnlFdgogX19aTjZ3ZWJydGMyN1Nlc3Npb25EZXNjcmlwdGlvbkludGVyZmFj
ZTE2UmVtb3ZlQ2FuZGlkYXRlc0VSS05TdDNfXzE2dmVjdG9ySU43Y3JpY2tldDlDYW5kaWRhdGVF
TlMxXzlhbGxvY2F0b3JJUzRfRUVFRQogX19aTks2d2VicnRjMjFJY2VDYW5kaWRhdGVJbnRlcmZh
Y2UxMHNlcnZlcl91cmxFdgorX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NW
QnVmZmVyCiBfX1pONndlYnJ0YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3ZWJydGMy
NmNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5
RU5TXzEyV2ViS2l0VlA5VlRCRQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0
b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExvd0xhdGVu
Y3lFCiBfX1pONndlYnJ0YzI5c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgogX19aTjZ3
ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJX
ZWJLaXRWUDlEZWNvZGVyRXYKLV9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05T
XzEwVmlkZW9GcmFtZUVSS05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVm
ZmVyVHlwZUVFRUUKLV9fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZl
cgorX19aTjZ3ZWJydGMyNmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0Zy
YW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVF
RQogX19aTjNydGMyNEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeTE5Q3JlYXRlQXN5bmNSZXNvbHZl
ckV2CiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5QzJFdgogX19aTjNydGMyNEJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeUQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCA3
M2JjZjM4NjhjZWFhMDc4Y2E0ZjU4OWVlY2VmOWNhOTdmNDY3YTk2Li4wZDM1Y2U0OWMzN2RjZjc4
YWRlNGMyN2JhOWE5ZWI4MTI2MDY4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC05
NywxNCArOTcsMTQgQEAgX19aTjZ3ZWJydGMzMkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0
b3J5RXYKIF9fWk42d2VicnRjMzJDcmVhdGVCdWlsdGluQXVkaW9FbmNvZGVyRmFjdG9yeUV2CiBf
X1pONndlYnJ0YzI3U2Vzc2lvbkRlc2NyaXB0aW9uSW50ZXJmYWNlMTZSZW1vdmVDYW5kaWRhdGVz
RVJLTlN0M19fMTZ2ZWN0b3JJTjdjcmlja2V0OUNhbmRpZGF0ZUVOUzFfOWFsbG9jYXRvcklTNF9F
RUVFCiBfX1pOSzZ3ZWJydGMyMUljZUNhbmRpZGF0ZUludGVyZmFjZTEwc2VydmVyX3VybEV2Citf
X1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKIF9fWk42d2VicnRj
MjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2Rl
ckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJF
CiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1
RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlz
ZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgot
X19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0
M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQotX19aTjZ3
ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCitfX1pONndlYnJ0YzI2Y3Jl
YXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0
aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCiBfX1pOM3J0YzI0QmFzaWNQ
YWNrZXRTb2NrZXRGYWN0b3J5MTlDcmVhdGVBc3luY1Jlc29sdmVyRXYKIF9fWk4zcnRjMjRCYXNp
Y1BhY2tldFNvY2tldEZhY3RvcnlDMkV2CiBfX1pOM3J0YzI0QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5RDJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVj
ZWl2ZXIuY3BwCmluZGV4IGYwYmE5ZGY0MzQ0NzNlN2YzNjgzNGRmNzA4NDcyYmEwMDIyMWQ5NGUu
LmI3NWM0MjkwOWY3YjQ5NmM3NzFmZmM4MDk1OGM4ZTUyMDEyZmNhNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RGVjb2RlclJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYwLDcgKzE2
MCw3IEBAIE9TU3RhdHVzIFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQg
ZXJyb3IpCiAKIGludDMyX3QgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJh
bWUmIGZyYW1lKQogewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFt
ZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgQnVmZmVyVHlwZSB0
eXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQs
IHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29s
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRVdGlsaXRpZXMuaAppbmRleCA3NGQzNzY4NWI0NzQ2NTNmOTRkNzhjNjE4YjdmNWNkMzgy
M2Y5OWNmLi4zZWEwNGZkNThmNGM2NWZlYzM1NzViYTUwMWQzNjA5NWI2OWE2M2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lX2J1ZmZlci5oIgogI2luY2x1ZGUgImFwaS9z
Y29wZWRfcmVmcHRyLmgiCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KIAogdXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NW
QnVmZmVyKjsKQEAgLTQ2LDcgKzQ3LDcgQEAgdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxs
b3dlZChib29sKTsKIGJvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVt
IGNsYXNzIEJ1ZmZlclR5cGUgeyBJNDIwLCBJMDEwIH07Ci1DVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENW
UGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYpOworQ1ZQaXhlbEJ1
ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29u
c3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJU
eXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENW
UGl4ZWxCdWZmZXJSZWYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRp
bGl0aWVzLm1tCmluZGV4IDI3Y2FlOTc4MjI3ZmVlYWI5MGE0YjZmZmM3ZjVlZmNiZjA2NDE1ZmUu
LjQ5ODEyZTdkMjM3ZThhYmExYjIzZDU5NTQ0MDE4ZTg4NmUwNjhhMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMg
Ym9vbCBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVy
SW50ZXJmYWNlKiBmcmFtZQogICAgIHJldHVybiB0cnVlOwogfQogCi1DVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYg
bWFrZVBpeGVsQnVmZmVyKQorQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVs
QnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVy
KQogewogICAgIGF1dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CiAgICAg
aWYgKGJ1ZmZlci0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsK
QEAgLTE1NCw3ICsxNTQsNyBAQCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0g
bWFrZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9
PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZm
ZXJUeXBlOjpJMDEwKTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVm
ZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1l
QnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEw
KTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgUlRDX0xPRyhXQVJO
SU5HKSA8PCAiUGl4ZWwgYnVmZmVyIGNyZWF0aW9uIGZhaWxlZC4iOwogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xNzIsNyArMTcyLDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChS
VENDVlBpeGVsQnVmZmVyICopZnJhbWVCdWZmZXI7Ci0gICAgcmV0dXJuIHJ0Y1BpeGVsQnVmZmVy
LnBpeGVsQnVmZmVyOworICAgIHJldHVybiBDVlBpeGVsQnVmZmVyUmV0YWluKHJ0Y1BpeGVsQnVm
ZmVyLnBpeGVsQnVmZmVyKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1dlYktpdC9saWJ3ZWJydGMuZGlmZiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9XZWJLaXQvbGlid2VicnRjLmRpZmYKaW5kZXggMzA5MjExNjM4M2MzNWNlYTUyZjliODZm
MDljMGUwZGU0YjI3NTZkZC4uOGJjYTNjZTA5MTg1MjJmMTcxZWI2M2NhYTVmMDFjMDRiM2ZhOGI3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC9saWJ3ZWJy
dGMuZGlmZgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0L2xpYndlYnJ0
Yy5kaWZmCkBAIC05NDQsOSArOTQ0LDkgQEAgbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAw
MDAwMDAwMDAwLi5lZjE0NTZlZGRkMwogLS0tIC9kZXYvbnVsbAogKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMu
aAotQEAgLTAsMCArMSw1NCBAQAorQEAgLTAsMCArMSw1MyBAQAogKy8qCi0rICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiArICoKICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3MywyOSArOTczLDI4IEBAIGluZGV4IDAwMDAw
MDAwMDAwLi5lZjE0NTZlZGRkMwogKyNwcmFnbWEgb25jZQogKwogKyNpbmNsdWRlICJhcGkvdmlk
ZW8vdmlkZW9fZnJhbWVfYnVmZmVyLmgiCi0rI2luY2x1ZGUgInJ0Y19iYXNlL3Njb3BlZF9yZWZf
cHRyLmgiCi0rI2luY2x1ZGUgIndlYnJ0Yy9tZWRpYS9lbmdpbmUvd2VicnRjdmlkZW9kZWNvZGVy
ZmFjdG9yeS5oIgotKyNpbmNsdWRlICJ3ZWJydGMvbWVkaWEvZW5naW5lL3dlYnJ0Y3ZpZGVvZW5j
b2RlcmZhY3RvcnkuaCIKKysjaW5jbHVkZSAiYXBpL3Njb3BlZF9yZWZwdHIuaCIKKysjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CisrI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiArCi0r
dHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhlbEJ1ZmZlclJlZjsKKyt1c2luZyBDVlBp
eGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogKwogK25hbWVzcGFjZSB3ZWJydGMg
ewogKwotK2NsYXNzIFZpZGVvRGVjb2RlckZhY3Rvcnk7Ci0rY2xhc3MgVmlkZW9FbmNvZGVyRmFj
dG9yeTsKICtjbGFzcyBWaWRlb0ZyYW1lOwogKwotK2VudW0gY2xhc3MgV2ViS2l0Q29kZWNTdXBw
b3J0IHsgSDI2NCwgSDI2NEFuZFZQOCB9OwotKwotK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZp
ZGVvRW5jb2RlckZhY3Rvcnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdENvZGVj
U3VwcG9ydCk7Ci0rc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4g
Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0KTsKKytlbnVtIGNs
YXNzIFdlYktpdEgyNjUgeyBPZmYsIE9uIH07CisrZW51bSBjbGFzcyBXZWJLaXRWUDkgeyBPZmYs
IFByb2ZpbGUwLCBQcm9maWxlMEFuZDIgfTsKKytlbnVtIGNsYXNzIFdlYktpdFZQOVZUQiB7IE9m
ZiwgT24gfTsKKytlbnVtIGNsYXNzIFdlYktpdEgyNjRMb3dMYXRlbmN5IHsgT2ZmLCBPbiB9Owog
KwogK3ZvaWQgc2V0QXBwbGljYXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2ZSk7CiArCiArdm9pZCBz
ZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKICtib29sIGlzSDI2NEhhcmR3YXJl
RW5jb2RlckFsbG93ZWQoKTsKICsKLStDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJS
ZWYoc2l6ZV90LCBzaXplX3QpPiYpOworK2VudW0gY2xhc3MgQnVmZmVyVHlwZSB7IEk0MjAsIEkw
MTAgfTsKKytDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0
IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90
LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVU
QUlORUQ7CiArcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4
ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwogKwogK30KQEAgLTEwMDQsOSArMTAw
Myw5IEBAIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwMDAwMC4uNjVlZWZhMzZm
MmQKIC0tLSAvZGV2L251bGwKICsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCi1AQCAtMCwwICsxLDE4NSBA
QAorQEAgLTAsMCArMSwxNzggQEAKICsvKgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKyAqCiArICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiArICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDMyLDY4ICsxMDMxLDE1IEBAIGluZGV4IDAwMDAwMDAwMDAwLi42NWVlZmEz
NmYyZAogKwogKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRpZXMuaCIKICsKLSsvLyNpbmNsdWRlICJD
b21tb24vUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyLmgiCi0rI2ltcG9ydCAiV2ViUlRD
L1JUQ1ZpZGVvQ29kZWNIMjY0LmgiCi0rCiArI2luY2x1ZGUgImFwaS92aWRlby92aWRlb19mcmFt
ZS5oIgogKyNpbmNsdWRlICJuYXRpdmUvc3JjL29iamNfZnJhbWVfYnVmZmVyLmgiCisrI2luY2x1
ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICsjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2lu
Y2x1ZGUvbGlieXV2L2NvbnZlcnRfZnJvbS5oIgotKyNpbmNsdWRlICJ3ZWJydGMvcnRjX2Jhc2Uv
Y2hlY2tzLmgiCi0rI2luY2x1ZGUgIkZyYW1ld29yay9IZWFkZXJzL1dlYlJUQy9SVENWaWRlb0Nv
ZGVjRmFjdG9yeS5oIgotKyNpbmNsdWRlICJGcmFtZXdvcmsvSGVhZGVycy9XZWJSVEMvUlRDVmlk
ZW9GcmFtZS5oIgorKyNpbmNsdWRlICJsaWJ5dXYvY3B1X2lkLmgiCisrI2luY2x1ZGUgImxpYnl1
di9yb3cuaCIKICsjaW5jbHVkZSAiRnJhbWV3b3JrL0hlYWRlcnMvV2ViUlRDL1JUQ1ZpZGVvRnJh
bWVCdWZmZXIuaCIKLSsjaW5jbHVkZSAiRnJhbWV3b3JrL05hdGl2ZS9hcGkvdmlkZW9fZGVjb2Rl
cl9mYWN0b3J5LmgiCi0rI2luY2x1ZGUgIkZyYW1ld29yay9OYXRpdmUvYXBpL3ZpZGVvX2VuY29k
ZXJfZmFjdG9yeS5oIgotKy8qCi0rI2lmICFkZWZpbmVkKFdFQlJUQ19JT1MpCi0rX19hdHRyaWJ1
dGVfXygob2JqY19ydW50aW1lX25hbWUoIldLX1JUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZl
ciIpKSkKLStAaW50ZXJmYWNlIFJUQ1VJQXBwbGljYXRpb25TdGF0dXNPYnNlcnZlciA6IE5TT2Jq
ZWN0Ci0rCi0rKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlOwotKysgKHZvaWQpcHJlcGFy
ZUZvclVzZTsKLSsKLSstIChCT09MKWlzQXBwbGljYXRpb25BY3RpdmU7Ci0rCi0rQGVuZAotKyNl
bmRpZgotKwotK0BpbXBsZW1lbnRhdGlvbiBSVENVSUFwcGxpY2F0aW9uU3RhdHVzT2JzZXJ2ZXIg
ewotKyAgICBCT09MIF9pc0FjdGl2ZTsKLSt9Ci0rCi0rKyAoaW5zdGFuY2V0eXBlKXNoYXJlZElu
c3RhbmNlIHsKLSsgICAgc3RhdGljIGlkIHNoYXJlZEluc3RhbmNlOwotKyAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSsgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewotKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW3NlbGYgYWxsb2NdIGluaXRdOwotKyAgICB9
KTsKKysjaW5jbHVkZSAidGhpcmRfcGFydHkvbGlieXV2L2luY2x1ZGUvbGlieXV2LmgiCiArCi0r
ICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKLSt9Ci0rCi0rKyAodm9pZClwcmVwYXJlRm9yVXNl
IHsKLSsgICAgX191bnVzZWQgUlRDVUlBcHBsaWNhdGlvblN0YXR1c09ic2VydmVyICpvYnNlcnZl
ciA9IFtzZWxmIHNoYXJlZEluc3RhbmNlXTsKLSt9Ci0rCi0rLSAoaWQpaW5pdCB7Ci0rICAgIF9p
c0FjdGl2ZSA9IFlFUzsKLSsgICAgcmV0dXJuIHNlbGY7Ci0rfQotKwotKy0gKHZvaWQpc2V0QWN0
aXZlIHsKLSsgICAgX2lzQWN0aXZlID0gWUVTOwotK30KLSsKLSstICh2b2lkKXNldEluYWN0aXZl
IHsKLSsgICAgX2lzQWN0aXZlID0gTk87Ci0rfQotKwotKy0gKEJPT0wpaXNBcHBsaWNhdGlvbkFj
dGl2ZSB7Ci0rICAgIHJldHVybiBfaXNBY3RpdmU7Ci0rfQotKwotK0BlbmQKLSsqLwogK25hbWVz
cGFjZSB3ZWJydGMgewogKwogK3ZvaWQgc2V0QXBwbGljYXRpb25TdGF0dXMoYm9vbCBpc0FjdGl2
ZSkKQEAgLTExMDYsNDAgKzEwNTIsMTMgQEAgaW5kZXggMDAwMDAwMDAwMDAuLjY1ZWVmYTM2ZjJk
CiArICovCiArfQogKwotK3N0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rv
cnk+IGNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5KFdlYktpdENvZGVjU3VwcG9ydCBjb2RlY1N1
cHBvcnQpCi0rewotKyNpZiBFTkFCTEVfVkNQX0VOQ09ERVIKLSsgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwotKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotKyAg
ICAgICAgd2VicnRjOjpWUE1vZHVsZUluaXRpYWxpemUoKTsKLSsgICAgfSk7Ci0rI2VuZGlmCi0r
ICAgIHJldHVybiBPYmpDVG9OYXRpdmVWaWRlb0VuY29kZXJGYWN0b3J5KGNvZGVjU3VwcG9ydCA9
PSBXZWJLaXRDb2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JUQ0RlZmF1bHRWaWRlb0VuY29k
ZXJGYWN0b3J5IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlkZW9FbmNvZGVyRmFjdG9yeUgyNjQgYWxs
b2NdIGluaXRdKTsKLSt9Ci0rCi0rc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVy
RmFjdG9yeT4gY3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnkoV2ViS2l0Q29kZWNTdXBwb3J0IGNv
ZGVjU3VwcG9ydCkKLSt7Ci0rICAgIHJldHVybiBPYmpDVG9OYXRpdmVWaWRlb0RlY29kZXJGYWN0
b3J5KGNvZGVjU3VwcG9ydCA9PSBXZWJLaXRDb2RlY1N1cHBvcnQ6OkgyNjRBbmRWUDggPyBbW1JU
Q0RlZmF1bHRWaWRlb0RlY29kZXJGYWN0b3J5IGFsbG9jXSBpbml0XSA6IFtbUlRDVmlkZW9EZWNv
ZGVyRmFjdG9yeUgyNjQgYWxsb2NdIGluaXRdKTsKLSt9Ci0rCi0rc3RhdGljIGJvb2wgaDI2NEhh
cmR3YXJlRW5jb2RlckFsbG93ZWQgPSB0cnVlOwotK3ZvaWQgc2V0SDI2NEhhcmR3YXJlRW5jb2Rl
ckFsbG93ZWQoYm9vbCBhbGxvd2VkKQotK3sKLSsgICAgaDI2NEhhcmR3YXJlRW5jb2RlckFsbG93
ZWQgPSBhbGxvd2VkOwotK30KLSsKLStib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQo
KQotK3sKLSsgICAgcmV0dXJuIGgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkOwotK30KLSsKICty
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBwaXhlbEJ1ZmZlclRv
RnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKICt7CiArICAgIFJUQ0NWUGl4ZWxC
dWZmZXIgKmZyYW1lQnVmZmVyID0gW1tSVENDVlBpeGVsQnVmZmVyIGFsbG9jXSBpbml0V2l0aFBp
eGVsQnVmZmVyOnBpeGVsQnVmZmVyXTsKICsgICAgcmV0dXJuIG5ldyBydGM6OlJlZkNvdW50ZWRP
YmplY3Q8T2JqQ0ZyYW1lQnVmZmVyPihmcmFtZUJ1ZmZlcik7CiArfQogKwotK3N0YXRpYyBib29s
IENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpJNDIwQnVmZmVySW50ZXJmYWNlPiYgZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxf
YnVmZmVyKSB7Cisrc3RhdGljIGJvb2wgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0
IHdlYnJ0Yzo6STQyMEJ1ZmZlckludGVyZmFjZSogZnJhbWUsIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxfYnVmZmVyKSB7CiArICAgIFJUQ19EQ0hFQ0socGl4ZWxfYnVmZmVyKTsKICsgICAgUlRDX0RD
SEVDSyhDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NW
UGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBDVlBpeGVsQnVm
ZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRUeXBl
XzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UpOwogKyAgICBSVENfRENIRUNLX0VRKENWUGl4
ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCksIHN0YXRpY19jYXN0PHNp
emVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CkBAIC0xMTQ4LDExICsxMDY3LDI2IEBAIGluZGV4IDAw
MDAwMDAwMDAwLi42NWVlZmEzNmYyZAogKyAgICBpZiAoQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRk
cmVzcyhwaXhlbF9idWZmZXIsIDApICE9IGtDVlJldHVyblN1Y2Nlc3MpCiArICAgICAgICByZXR1
cm4gZmFsc2U7CiArCisrICAgIGF1dG8gc3JjX3dpZHRoX3kgPSBmcmFtZS0+d2lkdGgoKTsKKysg
ICAgYXV0byBzcmNfaGVpZ2h0X3kgPSBmcmFtZS0+aGVpZ2h0KCk7CisrICAgIGF1dG8gc3JjX3dp
ZHRoX3V2ID0gZnJhbWUtPkNocm9tYVdpZHRoKCk7CisrICAgIGF1dG8gc3JjX2hlaWdodF91diA9
IGZyYW1lLT5DaHJvbWFIZWlnaHQoKTsKKysKICsgICAgdWludDhfdCogZHN0X3kgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBp
eGVsX2J1ZmZlciwgMCkpOwogKyAgICBpbnQgZHN0X3N0cmlkZV95ID0gQ1ZQaXhlbEJ1ZmZlckdl
dEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworKyAgICBhdXRvIGRzdF93aWR0
aF95ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApOworKyAg
ICBhdXRvIGRzdF9oZWlnaHRfeSA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVs
X2J1ZmZlciwgMCk7CiArCiArICAgIHVpbnQ4X3QqIGRzdF91diA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxfYnVmZmVy
LCAxKSk7CiArICAgIGludCBkc3Rfc3RyaWRlX3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVy
Um93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpOworKyAgICBhdXRvIGRzdF93aWR0aF91diA9IENW
UGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAxKTsKKysgICAgYXV0byBk
c3RfaGVpZ2h0X3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUocGl4ZWxfYnVmZmVy
LCAxKTsKKysKKysgICAgaWYgKHNyY193aWR0aF95ICE9IGRzdF93aWR0aF95CisrICAgICAgICB8
fCBzcmNfaGVpZ2h0X3kgIT0gZHN0X2hlaWdodF95CisrICAgICAgICB8fCBzcmNfd2lkdGhfdXYg
IT0gZHN0X3dpZHRoX3V2CisrICAgICAgICB8fCBzcmNfaGVpZ2h0X3V2ICE9IGRzdF9oZWlnaHRf
dXYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CiArCiArICAgIGludCByZXN1bHQgPSBsaWJ5dXY6
Okk0MjBUb05WMTIoCiArICAgICAgICBmcmFtZS0+RGF0YVkoKSwgZnJhbWUtPlN0cmlkZVkoKSwK
QEAgLTExNjksMjQgKzExMDMsODIgQEAgaW5kZXggMDAwMDAwMDAwMDAuLjY1ZWVmYTM2ZjJkCiAr
ICAgIHJldHVybiB0cnVlOwogK30KICsKLSsKLStDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
RnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENW
UGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QpPiYgbWFrZVBpeGVsQnVmZmVyKQorK3N0YXRp
YyBib29sIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihjb25zdCB3ZWJydGM6OkkwMTBCdWZm
ZXJJbnRlcmZhY2UqIGZyYW1lLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZmZlcikKICt7Ci0r
ICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+dHlwZSgpICE9IFZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSsgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxjb25z
dCBJNDIwQnVmZmVySW50ZXJmYWNlPiBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIo
KS0+R2V0STQyMCgpOworKyAgICBSVENfRENIRUNLKHBpeGVsX2J1ZmZlcik7CisrICAgIFJUQ19E
Q0hFQ0soQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbF9idWZmZXIpID09IGtD
VlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZSB8fCBDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsX2J1ZmZlcikgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UpOworKyAgICBSVENfRENIRUNLX0VRKENW
UGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMCksIHN0YXRpY19jYXN0
PHNpemVfdD4oZnJhbWUtPmhlaWdodCgpKSk7CisrICAgIFJUQ19EQ0hFQ0tfRVEoQ1ZQaXhlbEJ1
ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbF9idWZmZXIsIDApLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGZyYW1lLT53aWR0aCgpKSk7CiArCi0rICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbWFrZVBp
eGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSk7Ci0rICAgICAgICBp
ZiAocGl4ZWxCdWZmZXIpCi0rICAgICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVy
KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKysg
ICAgaWYgKENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxfYnVmZmVyLCAwKSAhPSBr
Q1ZSZXR1cm5TdWNjZXNzKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKworKyAgICBhdXRvIHNy
Y195ID0gY29uc3RfY2FzdDx1aW50MTZfdCo+KGZyYW1lLT5EYXRhWSgpKTsKKysgICAgYXV0byBz
cmNfdSA9IGNvbnN0X2Nhc3Q8dWludDE2X3QqPihmcmFtZS0+RGF0YVUoKSk7CisrICAgIGF1dG8g
c3JjX3YgPSBjb25zdF9jYXN0PHVpbnQxNl90Kj4oZnJhbWUtPkRhdGFWKCkpOworKyAgICBhdXRv
IHNyY193aWR0aF95ID0gZnJhbWUtPndpZHRoKCk7CisrICAgIGF1dG8gc3JjX2hlaWdodF95ID0g
ZnJhbWUtPmhlaWdodCgpOworKyAgICBhdXRvIHNyY19zdHJpZGVfeSA9IGZyYW1lLT5TdHJpZGVZ
KCk7CisrICAgIGF1dG8gc3JjX3dpZHRoX3V2ID0gZnJhbWUtPkNocm9tYVdpZHRoKCk7CisrICAg
IGF1dG8gc3JjX2hlaWdodF91diA9IGZyYW1lLT5DaHJvbWFIZWlnaHQoKTsKKysgICAgYXV0byBz
cmNfc3RyaWRlX3UgPSBmcmFtZS0+U3RyaWRlVSgpOworKyAgICBhdXRvIHNyY19zdHJpZGVfdiA9
IGZyYW1lLT5TdHJpZGVWKCk7CisrCisrICAgIGF1dG8qIGRzdF95ID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50MTZfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxfYnVm
ZmVyLCAwKSk7CisrICAgIGF1dG8gZHN0X3N0cmlkZV95ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVz
UGVyUm93T2ZQbGFuZShwaXhlbF9idWZmZXIsIDApIC8gMjsKKysgICAgYXV0byBkc3Rfd2lkdGhf
eSA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxfYnVmZmVyLCAwKTsKKysgICAg
YXV0byBkc3RfaGVpZ2h0X3kgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShwaXhlbF9i
dWZmZXIsIDApOworKworKyAgICBhdXRvKiBkc3RfdXYgPSByZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhlbF9idWZmZXIsIDEp
KTsKKysgICAgYXV0byBkc3Rfc3RyaWRlX3V2ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93
T2ZQbGFuZShwaXhlbF9idWZmZXIsIDEpIC8gMjsKKysgICAgYXV0byBkc3Rfd2lkdGhfdXYgPSBD
VlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsX2J1ZmZlciwgMSk7CisrICAgIGF1dG8g
ZHN0X2hlaWdodF91diA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsX2J1ZmZl
ciwgMSk7CisrCisrICAgIGlmIChzcmNfd2lkdGhfeSAhPSBkc3Rfd2lkdGhfeQorKyAgICAgICAg
fHwgc3JjX2hlaWdodF95ICE9IGRzdF9oZWlnaHRfeQorKyAgICAgICAgfHwgc3JjX3dpZHRoX3V2
ICE9IGRzdF93aWR0aF91dgorKyAgICAgICAgfHwgc3JjX2hlaWdodF91diAhPSBkc3RfaGVpZ2h0
X3V2KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKworKyAgICBsaWJ5dXY6OkkwMTBUb1AwMTAo
c3JjX3ksIHNyY19zdHJpZGVfeSwKKysgICAgICAgICAgICAgICAgICAgICAgIHNyY191LCBzcmNf
c3RyaWRlX3UsCisrICAgICAgICAgICAgICAgICAgICAgICBzcmNfdiwgc3JjX3N0cmlkZV92LAor
KyAgICAgICAgICAgICAgICAgICAgICAgZHN0X3ksIGRzdF9zdHJpZGVfeSwgZHN0X3V2LCBkc3Rf
c3RyaWRlX3V2LAorKyAgICAgICAgICAgICAgICAgICAgICAgc3JjX3dpZHRoX3ksIHNyY19oZWln
aHRfeSk7CisrCisrICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbF9idWZm
ZXIsIDApOworKyAgICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVh
dGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4m
IGNyZWF0ZVBpeGVsQnVmZmVyKQorK3sKKysgICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19m
cmFtZV9idWZmZXIoKTsKKysgICAgaWYgKGJ1ZmZlci0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZm
ZXI6OlR5cGU6OmtOYXRpdmUpIHsKKysgICAgICAgIGF1dG8gdHlwZSA9IGJ1ZmZlci0+dHlwZSgp
OworKyAgICAgICAgaWYgKHR5cGUgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYg
dHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAxMCkgeworKyAgICAgICAgICAgIFJU
Q19MT0coV0FSTklORykgPDwgIlZpZGVvIGZyYW1lIGJ1ZmZlciB0eXBlIGlzIG5vdCBleHBlY3Rl
ZC4iOworKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworKyAgICAgICAgfQorKworKyAgICAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwg
YnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/
IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKKysgICAgICAgIGlmICghcGl4
ZWxCdWZmZXIpIHsKKysgICAgICAgICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJQaXhlbCBidWZm
ZXIgY3JlYXRpb24gZmFpbGVkLiI7CisrICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisrICAg
ICAgICB9CisrCisrICAgICAgICBpZiAodHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STQyMCkKKysgICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5H
ZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBDb3B5
VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsK
ICsgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICsgICAgfQogKwotKyAgICBhdXRvICpmcmFt
ZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KGZyYW1lLnZpZGVvX2ZyYW1l
X2J1ZmZlcigpLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKKysgICAgYXV0byAqZnJh
bWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJhbWVCdWZmZXIqPihidWZmZXIuZ2V0KCkpLT53
cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogKyAgICBpZiAoIVtmcmFtZUJ1ZmZlciBpc0tpbmRPZkNs
YXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCiArICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICsKICsgICAgYXV0byAqcnRjUGl4ZWxCdWZmZXIgPSAoUlRDQ1ZQaXhlbEJ1ZmZlciAqKWZyYW1l
QnVmZmVyOwotKyAgICByZXR1cm4gcnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXI7CisrICAgIHJl
dHVybiBydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlciA/IENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRj
UGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpIDogbnVsbHB0cjsKICt9CiArCiArfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IDBjNzFlMWRi
MTBmYTQzN2E3YzAwNDNkMzY0ZjQ0YmY3MjM3MTFjOTcuLjUyMWRlN2E5NzRlZWMyMGU5OTc0YzA4
YWQzOWI2Y2VmN2MyMWY3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsOCArMTE3LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZy
b21WaWQKICAgICAgICAgcmV0dXJuIG1fYmxhY2tGcmFtZS5nZXQoKTsKICAgICB9CiAKLSAgICBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbmV3UGl4ZWxCdWZmZXI7Ci0gICAgcmV0dXJuIHdl
YnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzLCAmbmV3UGl4ZWxCdWZmZXJd
KHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5
cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgIHJldHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3Jl
YXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVsQnVmZmVy
UmVmIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBv
b2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQ
b29sKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzAsOSArMTI5LDggQEAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
OjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIo
KSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCBjcmVhdGluZyBhIHBpeGVsIGJ1ZmZlciB3aXRoIGVy
cm9yICIsIHN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQot
ICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YocGl4ZWxCdWZmZXIpOwotICAgICAgICBy
ZXR1cm4gbmV3UGl4ZWxCdWZmZXIuZ2V0KCk7Ci0gICAgfSk7CisgICAgICAgIHJldHVybiBwaXhl
bEJ1ZmZlcjsKKyAgICB9KSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwCmluZGV4IDI4ZTljNjk4MmFjNTQ2OWVlOTVmYWI4NmRmNzZlNmNmMzhlOTI0ZmIuLmU0MDAw
MzFjODU0NjNjYWZlNWIyMTk2NDA0N2NjZjU1ODY0MjM4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MzEs
OCArNDMxLDcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAoIWVuY29kZXIuY29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAg
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBuZXdQaXhlbEJ1ZmZlcjsKLSAgICBhdXRvIHBp
eGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgWyZuZXdQaXhl
bEJ1ZmZlcl0oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUg
YnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW10oc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkg
LT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CiAgICAgICAgIE9TVHlwZSBwb29sQnVmZmVyVHlwZTsKICAg
ICAgICAgc3dpdGNoIChidWZmZXJUeXBlKSB7CiAgICAgICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJU
eXBlOjpJNDIwOgpAQCAtNDQ1LDE4ICs0NDQsMTcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6
OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYK
ICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgICAgICBuZXdQaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZVBpeGVsQnVmZmVy
RnJvbVBvb2wocGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgICAgcmV0dXJuIG5ld1BpeGVsQnVmZmVy
LmdldCgpOwotICAgIH0pOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tUG9vbChwaXhlbEJ1ZmZlclBvb2wpLmxlYWtSZWYoKTsKKyAgICB9KSk7CiAKICAgICBp
ZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9S
OwogCi0gICAgYXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVm
ZmVyLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9N
ZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSkpOworICAgIGF1dG8gc2Ft
cGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlci5nZXQoKSwgTWVkaWFU
aW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVW
aWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKICAgICBpZiAoIXNhbXBsZSkgewogICAg
ICAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhpcyBjb2RlIHBhdGgsIGN1cnJlbnRseSB3ZSBoYXZl
IG5vbiBCR1JBIGZvciBtdXRlZCBmcmFtZXMgYXQgbGVhc3QuCi0gICAgICAgIG5ld1BpeGVsQnVm
ZmVyID0gY29udmVydFRvQkdSQShwaXhlbEJ1ZmZlcik7Ci0gICAgICAgIHNhbXBsZSA9IFJlbW90
ZVZpZGVvU2FtcGxlOjpjcmVhdGUobmV3UGl4ZWxCdWZmZXIuZ2V0KCksIE1lZGlhVGltZShmcmFt
ZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3Rh
dGlvbihmcmFtZS5yb3RhdGlvbigpKSk7CisgICAgICAgIHBpeGVsQnVmZmVyID0gY29udmVydFRv
QkdSQShwaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgICAgIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2Ft
cGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBf
dXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5y
b3RhdGlvbigpKSk7CiAgICAgfQogCiAgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZp
ZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lIH0s
IDApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>